我正在使用以下代码从 XMl 文件中删除多个元素。
NodeList removeNodeList = doc.getElementsByTagName("server1");
Element rootElement = doc.getDocumentElement();
for (int i = 0; i < removeNodeList.getLength(); i++) {
rootElement.removeChild(removeNodeList.item(i));
}
但删除一个元素后,它就会脱离循环。这是什么问题。
以下是我的 XML 文件内容。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<start>
<category name="server1"/>
<category name="server2"/>
<server1 name="serverName1" value="serverValue"/>
<server1 name="serverName1" value="serverValue"/>
<server2 name="serverName2" value="serverValue"/>
</start>
我找到了解决方案:
让我详细解释一下问题是什么。
NodeList removeNodeList = doc.getElementsByTagName("server1");
removeNodeList.getLength()
将返回 2,因为有 2 个具有 nodeName 的节点server1
然后执行后rootElement.removeChild(removeNodeList.item(i));
然后检查for loop
状况i.e.
的价值i
is 1
and removeNodeList.getLength()
回报1
现在只有 1 个具有 nodeName 的节点server1
剩余于DOM document
这个条件失败了1 < 1 is false
所以我遵循了以下方法:
一旦 NodeList 不再使用,就删除所有元素。
NodeList nodes = doc.getElementsByTagName(elementName);
Set<Element> targetElements = new HashSet<Element>();
for (int i = 0; i < nodes.getLength(); i++) {
Element e = (Element)nodes.item(i);
targetElements.add(e);
}
for (Element e: targetElements) {
e.getParentNode().removeChild(e);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)