字符串根据属性替换

时间:2015-08-19 07:16:22

标签: java xml-parsing

我有一个文件字符串,如下所示

<html>
<head>
    <body>
        <normalstring>
            <ul>            
                <li>
                </li>
            </ul>
        </normalstring
            <teststring name="one" delete="yes">
                <ul>            
                    <li>
                    </li>
                </ul>
            </teststring>
            <teststring name="one" delete="yes">
                <ul>            
                    <li>
                    </li>
                </ul>
            </teststring>
        </body>
    </head>
</html>

我想找到字符串节点<teststring>并从<teststring> to </teststring>中取出整个字符串 拿了字符串后,我想找到字符串有“删除”属性吗? 如果找到的字符串有“删除”,我想用“空”替换整个字符串(我的意思是我想删除找到的子字符串,它的内容是“ 如果找到的字符串中没有“delete”属性,我想仅删除节点<teststring name="one" delete="yes">而不是内部内容。

我想在字符串中处理此问题而不是将字符串转换为文档。因为我在解析字符串后会遇到一些问题。

谢谢, JEY

1 个答案:

答案 0 :(得分:0)

首先,您应该阅读一些XML解析文档。有几个XML解析器,但我通常使用DOM解析器。很棒的文档可以在www.w3schools.com找到 要访问节点,您必须创建DocumentBuilderFactory,documentBuilder和Document。接下来,您必须在文档中搜索所需的节点名称,如下例所示:

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
DocumentBuilder b = f.newDocumentBuilder();
Document doc = b.parse(File file);
NodeList nodes = doc.getElementsByTagName("teststring");

接下来,要检索节点属性,您必须创建一个Element对象来存储NodeList中的特定节点,并使用String来存储属性的值。您可以创建一个循环来遍历存储的所有节点,并且只能到达您想要的节点。

Element ele = nodes.item(i);
String s = ele.getAttribute("delete");

然后,您可以检查s中存储的字符串是否与.equals命令匹配“是”。我把最后一部分留给你,弄清楚如何删除你想要的字段。希望这有助于:)

相关问题