3
當我嘗試從java程序中的XML節點中刪除節點時,它給了我一個奇怪的問題。它正在刪除備用節點。在插入新節點之前,我必須刪除現有的節點。 我的xml文件是:從XML文件中刪除節點java程序
<?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>
當我嘗試從for循環打印c值時,它僅打印列表值的一半大小。 – mallikarjun 2012-07-10 11:12:57
當我不在循環中增加「c」值時,它就解決了。但我不知道爲什麼有人可以解釋我。 – mallikarjun 2012-07-10 11:17:51
當您刪除節點0時,所有節點都向左移動。因此,節點1變爲節點0.然後,您嘗試刪除節點1,堅果永遠不會再回到刪除節點0。因此,您完全錯過了原始節點1. – 2013-09-08 21:36:50