无法在DOM XML文档中添加、删除节点
实际上,我正在为下面的XML字符串编写XML DOM解析器无法在DOM XML文档中添加、删除节点,xml,xml-parsing,Xml,Xml Parsing,实际上,我正在为下面的XML字符串编写XML DOM解析器 <?xml version="1.0" encoding="UTF-8"?> <schema version="1.0"> <itemGroups> <itemGroup id="itemGroup1"> <items> <item id="One" /> <item id="Two" />
<?xml version="1.0" encoding="UTF-8"?>
<schema version="1.0">
<itemGroups>
<itemGroup id="itemGroup1">
<items>
<item id="One" />
<item id="Two" />
<item id="item1" />
<item id="item1" />
<item id="item1" />
<item id="item1" />
</items>
</itemGroup>
<itemGroup id="itemGroup2">
<items>
<item id="One" />
<item id="Two" />
<item id="item1" />
<item id="item1" />
<item id="item1" />
<item id="item1" />
</items>
</itemGroup>
</itemGroups>
</schema>
在这里,我需要从每个项目组中删除id为“item”的项目。请帮助我仅使用文档对象来完成此操作
这是我们用来删除元素但得到空指针异常的代码
public static Document removeElement(Document doc, String idValue,
String groupNode, String itemNode) {
NodeList itemGroupList = doc.getElementsByTagName(groupNode);
for (int i = 0; i < itemGroupList.getLength(); i++) {
Element node = (Element) itemGroupList.item(i);
if (node.getAttribute("id").equals(idValue)) {
NodeList itemlist = node.getElementsByTagName(itemNode);
for (int j = 0; j < itemlist.getLength(); j++) {
Element nodenewitm = (Element) itemlist.item(j);
NodeList nodeListRemove = nodenewitm.getElementsByTagName("item");
if(nodenewitm != null) {
NodeList itemsList = nodenewitm.getChildNodes();
if(itemsList != null) {
for (int counter = 0; counter < itemsList.getLength(); counter++) {
Element item = (Element) itemlist.item(counter);
if(item.getAttribute("id").indexOf("ATTR_") > 0) {
nodenewitm.removeChild(item);
}
}
}
}
}
}
}
return doc;
}
publicstaticdocumentremovelement(documentdoc,stringidvalue,
字符串组节点,字符串项节点){
NodeList itemGroupList=doc.getElementsByTagName(groupNode);
对于(int i=0;i0){
移除儿童(项目);
}
}
}
}
}
}
}
退货单;
}
我们只是调用removelement(文档,“itemGroup1”、“itemGroup”、“items”)
如果我能尽快得到帮助,我将不胜感激
谢谢
Ramesh Reddy使用XPath。您可以根据需要构造表达式
void removeElement(Document doc)
throws XPathExpressionException {
XPath xp = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList) xp.evaluate(
"//items/item[starts-with(@id, 'item')]", doc,
XPathConstants.NODESET);
for (int i = 0; i < nl.getLength(); ++i) {
nl.item(i).getParentNode().removeChild(nl.item(i));
}
}
void removelement(文档文档)
抛出XPathExpressionException{
XPath xp=XPathFactory.newInstance().newXPath();
NodeList nl=(NodeList)xp.evaluate(
//items/item[以(@id,'item')]开头],doc,
XPathConstants.NODESET);
对于(int i=0;i