2011-06-23 51 views
2

使用:javax.xmlorg.w3c如何通过XML中的id删除节点元素?

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> 

回答

0

您可以使用:

Element element = doc.getElementById("1236"); 
element.getParentNode().removeChild(element); 

这应该给你ID为 “1236” 的元素。然后获取元素的父节点,并通过将ID为“1236”的元素传递给removeChild来移除该元素。

请参阅here for a full example.

希望这会有所帮助。

+1

这不起作用。我试过这个。谢谢你 – stackoverflow