在這裏我有xml節點,我正在顯示和選擇特定的節點進行刪除。對於我的下面的xml文件和代碼,只有第一個節點正在刪除,但我選擇了第二個節點。xml節點刪除在java中使用dom解析器無法正常工作?
<root>
<book> <!--node 1 -->
<id>1111</id>
<name>abacd</name>
<author>abcd</author>
<price>700</price>
<category>abcd</category>
</book>
<book> <!--node 2 -->
<id>2222</id>
<name>abacd</name>
<author>abcd</author>
<price>700</price>
<category>abcd</category>
</book>
<book> <!--node 3 -->
<id>3333</id>
<name>abacd</name>
<author>abcd</author>
<price>700</price>
<category>abcd</category>
</book>
</root>
和我的Java代碼來刪除節點
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
int nodeValue = Integer.parseInt(nodeNumber);
//nodeValue is node number eg: 2;
NodeList bookList = doc.getElementsByTagName("book");
for (int i = 1; i <= bookList.getLength(); i++) {
if (i == nodeValue) {
Element rootElement = (Element) doc.getElementsByTagName("book").item(0);
Element idElement = (Element) doc.getElementsByTagName("id").item(0);
idElement.getParentNode().removeChild(idElement);
Element nameElement = (Element) doc.getElementsByTagName("name").item(0);
nameElement.getParentNode().removeChild(nameElement);
Element authorElement = (Element) doc.getElementsByTagName("author").item(0);
authorElement.getParentNode().removeChild(authorElement);
Element priceElement = (Element) doc.getElementsByTagName("price").item(0);
priceElement.getParentNode().removeChild(priceElement);
Element categoryElement = (Element) doc.getElementsByTagName("category").item(0);
categoryElement.getParentNode().removeChild(categoryElement);
rootElement.getParentNode().removeChild(rootElement);
doc.normalize();
}
}
可能有人指導我在哪裏可以更改我的代碼。
StanislavL,謝謝你的答覆。我發現我的答案請在下面檢查。 – khanam