【发布时间】:2014-05-25 08:24:45
【问题描述】:
我有这种从 XML 文件中删除节点的方法:
public static void deleteElement(Document doc, String elementType, String tagName, String valueToCheck) {
// <elementType>
NodeList nodes = doc.getElementsByTagName(elementType);
System.out.println("NODES: "+nodes.getLength());
for (int i = 0; i < nodes.getLength(); i++) {
Element person = (Element) nodes.item(i);
// <tagName>
Element name = (Element) person.getElementsByTagName(tagName).item(0);
String pName = name.getTextContent();
System.out.println(pName);
if (pName.equals(valueToCheck)) {
person.getParentNode().removeChild(person);
System.out.println("match" + pName);
}
}
System.out.println("NODES AFTER DELETE: "+nodes.getLength());
}
这里我指定了根元素、要检查的标签和要检查的值。
在我的 XML 上:
<?xml version="1.0"?>
<book>
<person>
<id>1</id>
<name>Person 1</name>
</person>
<person>
<id>1</id>
<name>Person 2</name>
</person>
<person>
<id>3</id>
<name>Person 3</name>
</person>
<person>
<id>4</id>
<name>Person 3</name>
</person>
</book>
执行带有参数person、name、Person 3的方法后的输出是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<book>
<person>
<id>1</id>
<name>Person 1</name>
</person>
<person>
<id>1</id>
<name>Person 2</name>
</person>
<person>
<id>4</id>
<name>Person 3</name>
</person>
</book>
即只删除了第一个外观...任何想法为什么?
【问题讨论】:
-
在您的情况下 elementType 的值是多少?
标签: java xml dom xml-parsing