[英]remove node from XML file java program
When I try to remove a node from XML node from java program it is giving me a strange problem. 当我尝试从java程序中删除XML节点中的节点时,它给了我一个奇怪的问题。 It is removing alternate nodes. 它正在删除备用节点。 I have to remove existing nodes before inserting new nodes. 我必须在插入新节点之前删除现有节点。 my xml file is: 我的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>
my java program is: 我的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);
}
This code is deleting alternative nodes I don't know why. 此代码正在删除我不知道原因的替代节点。 The resulting XML is showing like this: 生成的XML显示如下:
<categories>
<category label="6 seconds"/>
<category label="12 seconds"/>
<category label="3 seconds"/>
<category label="6 seconds"/>
<category label="9 seconds"/>
.....
.....
</categories>
Every time you remove a child the list becomes shorter, the list isn't a static collections, so every time you call getLength() you get the actual size 每次删除子项时,列表都会变短,列表不是静态集合,所以每次调用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);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.