Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在XML中按id删除节点元素?_Java_Xml - Fatal编程技术网

Java 如何在XML中按id删除节点元素?

Java 如何在XML中按id删除节点元素?,java,xml,Java,Xml,使用:javax.xml和org.w3c: public void removeNodeFromXML(File xmlfile_, String uuid) { DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.pars

使用:
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>

//把这家伙带走
乔希
1234
12.2.2.3
约翰
1234
12.2.2.3
您可以使用:

Element element = doc.getElementById("1236");
element.getParentNode().removeChild(element);
这将为您提供ID为“1236”的元素。然后获取元素的父节点,并通过将ID为“1236”的元素传递给removeChild来删除该元素


希望这有帮助。

您可以使用XPath选择特定的元素/属性。只需在网上搜索教程。您还应该阅读,其中包括简短的示例

XML文件的XPath表达式是:
/server[@ID='xxxx']