2011-06-23 9 views
2
使用

javax.xmlorg.w3cXMLでnode要素を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> 

答えて

3

XPathを使用して特定の要素/属性を選択できます。 Webでチュートリアルを検索するだけです。 Here is good one.また、短い例が含まれているJava-Doc for java.xml.xpathもお読みください。

XMLファイルのXPath式は次のとおりです。/server[@ID='xxxx']

0

次のようになります。

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

これは "1236" IDとあなたの要素を与える必要があります。次に、要素の親ノードを取得し、ID「1236」の要素をremoveChildに渡して要素を削除します。

は、このことができますhere for a full example.

希望を参照してください。

+1

これは動作しません。私はこれを試した。ありがとう、結構です – stackoverflow

関連する問題