在学习java的DOM解析的时候,发现一个问题,就是在使用循环的方式使用removeChild()这个方法删除元素,发现只能够删除第一个元素,其他同名称的元素无法删除?百度谷歌也没找到答案,特来请教各位大神,如有老师肯指教,感激不尽.
<?xml version="1.0" encoding="utf-8"?>
<shop>
<pen>
<type>钢笔</type>
<manufacturers id="9567">长城牌</manufacturers>
<tradePrice>0.5</tradePrice>
</pen>
<book>
<name>新的世界,新的你</name>
<year>3</year>
<price >56.6</price>
</book>
<book>
<name>java入门到跑路</name>
<year>111</year>
<price >100</price>
</book>
</shop>
//使用DocumentBuilder解析原xml文件,将xml文件中的数据加载到内存中,形成DOM树
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
File xmlFile = new File("e:"+ File.separator+"testWeb"+File.separator+"info.xml");
Document xmlDoc = docBuilder.parse(xmlFile);
//得到要修改的元素节点
NodeList yearElements = xmlDoc.getElementsByTagName("year");
//修改xml元素
//得到要修改的元素节点
for (int i = 0; i < yearElements.getLength(); i++) {
//找到当前"year"元素节点的父节点,然后使用父节点删除所有"year"子节点
Node temp = yearElements.item(i);
temp.getParentNode().removeChild(temp);
}
//将修改后的DOM树,覆盖到原xml文件中
TransformerFactory tfFactory = TransformerFactory.newInstance();
Transformer transformer = tfFactory.newTransformer();
transformer.transform(new DOMSource(xmlDoc),new StreamResult(xmlFile));