【发布时间】:2023-03-31 23:45:01
【问题描述】:
我正在使用以下代码从 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是动态的,删除元素会更新(减少)长度,导致您的循环条件仅在第一次评估为真。这主要基于它们在 JavaScript 中的工作方式,不过,我没有在 Java 中处理 XML 文档的经验。 -
你检查过一些东西吗 - removeNodeList 的长度。而执行for循环后xml的内容是什么,是不是只删除了一个元素?
-
@csn 感谢回复,我检查了
NodeList的大小,之前是2,然后减少到1。
标签: java xml jakarta-ee jaxp