java - 从 XML 文件 java 程序中删除节点

标签 java xml

当我尝试从 Java 程序的 XML 节点中删除一个节点时,出现了一个奇怪的问题。它正在删除备用节点。在插入新节点之前,我必须删除现有节点。 我的 xml 文件是:

<?xml version="1.0" encoding="windows-1252" ?>
<chart>
<categories>
 <category label="3 seconds"/>
 <category label="6 seconds"/>
 <category label="9 seconds"/>
 <category label="12 seconds"/>
</categories>

</chart>

我的java程序是:

      DocumentBuilderFactory  docFactory  = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = docFactory.newDocumentBuilder();

      Document doc = docBuilder.parse(filePath);


      Node categories = doc.getElementsByTagName("categories").item(0);

      NodeList categorieslist = categories.getChildNodes();

      // if exists delete old data the insert new data.


      for (int c = 0; c < categorieslist.getLength(); c++) {

        Node node = categorieslist.item(c);
        categories.removeChild(node);
      }
    for(int i=1;i<20;i++){

    Element category = doc.createElement("category");
    category.setAttribute("label",3*i+" seconds");
    categories.appendChild(category);
  }

此代码正在删除替代节点,我不知道为什么。生成的 XML 显示如下:

<categories>
 <category label="6 seconds"/>
 <category label="12 seconds"/>
 <category label="3 seconds"/>
 <category label="6 seconds"/>
 <category label="9 seconds"/>
      .....
      .....
 </categories>

最佳答案

每次你删除一个 child 列表变短,列表不是一个静态集合,所以每次你调用 getLength() 你得到实际大小

Node categories = doc.getElementsByTagName("categories").item(0);
NodeList categorieslist = categories.getChildNodes();
while (categorieslist.getLength() > 0) {
    Node node = categorieslist.item(0);
    node.getParentNode().removeChild(node);
}

关于java - 从 XML 文件 java 程序中删除节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11411604/

相关文章:

java - Crittercism API 自定义时间段的崩溃趋势数据

html - 当存在多个具有相同属性和文本的元素时,如何识别 Xpath?

java - Bean 映射的 Hibernate 持久性问题(Dozer)

java - Intellij 中的 Maven 项目作为模块,无法识别新的 Maven 依赖项

java - 赋值作为三元的一部分 if

xml - 在 VBScript 中为 Dummy 导航 XML 节点

.net - 如何使用 XmlSerializer 序列化 System.Type 对象?

.net - 如何使用XPath伪造不存在的XML节点?

python - 解析 xml 查找具有匹配属性的最后一个元素

java - 为什么我无法使用 Ubuntu 编译 Java 应用程序?