如何解决如何在XML中按ID删除节点元素?
| 使用:javax.xml
和org.w3c
:
public void removeNodeFromXML(File xmlfile_,String uuid)
{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(xmlfile_);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer tFormer = tFactory.newTransformer();
//????
Element rootElement = doc.getRootElement();
rootElement.removeChild(\"1236\");
//???
// normalize the DOM tree to combine all adjacent nodes
doc.normalize();
Source source = new DOMSource(doc);
Result dest = new StreamResult(xmlfile_);
tFormer.transform(source,dest);
}
XML看起来像这样
<Servers>
//remove this guy
<server ID=\"1236\">
<name>Josh</name>
<port>1234</port>
<ip>12.2.2.3</ip>
</server>
<server ID=\"1237\">
<name>John</name>
<port>1234</port>
<ip>12.2.2.3</ip>
</server>
</Servers>
解决方法
您可以使用XPath选择特定的元素/属性。只需在网上搜索教程即可。这是个好人。您还应该阅读java.xml.xpath的Java-Doc,其中包括一些简短示例。
您的XML文件的XPath-Expression是:
/server[@ID=\'xxxx\']
, 您可以使用:
Element element = doc.getElementById(\"1236\");
element.getParentNode().removeChild(element);
这应为您提供ID为“ 1236”的元素。然后,您获得该元素的父节点,并通过将ID为“ 1236”的元素传递给removeChild来删除该元素。
有关完整示例,请参见此处。
希望这可以帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。