2015-11-17 2 views
1

У меня есть следующий XML:Удаление узла и его элементы из файла XML в Java

<table1> 
    <row0> 
     <column1>String</column1> 
     <column2>int</column2> 
    </row0> 

    <row1> 
     <column1>aa</column1> 
     <column2>65432</column2> 
    </row1> 

    <row2> 
     <column1>ww</column1> 
     <column2>1111</column2> 
    </row2> 

    <row3> 
     <column1>fff</column1> 
     <column2>333</column2> 
    </row3> 

    <row4> 
     <column1>jj</column1> 
     <column2>2</column2> 
    </row4> 
</table1> 

и я хочу, чтобы удалить row3 узла и его элементы. Я пишу этот XML-файл в java.how для этого? я увидел этот код в другой пост, но не мог понять его

public static void main(String[] args) throws Exception { 
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    Document document = dbf.newDocumentBuilder().parse(new File("input.xml")); 

    XPathFactory xpf = XPathFactory.newInstance(); 
    XPath xpath = xpf.newXPath(); 
    XPathExpression expression = xpath.compile("//A/B[C/E/text()=13]"); 

    Node b13Node = (Node) expression.evaluate(document, XPathConstants.NODE); 
    b13Node.getParentNode().removeChild(b13Node); 

    TransformerFactory tf = TransformerFactory.newInstance(); 
    Transformer t = tf.newTransformer(); 
    t.transform(new DOMSource(document), new StreamResult(System.out)); 
} 
+1

Вы можете использовать [DOM] (https://docs.oracle.com/javase/tutorial/jaxp/dom/readingXML.html) для переборе и изменения узлов! – ParkerHalo

+0

Возможный дубликат [Удалить XML-узел с помощью java-парсера] (http://stackoverflow.com/questions/3717215/remove-xml-node-using-java-parser) – dguay

+0

да, но какие изменения нужно сделать, чтобы помочь мне? @ dguay –

ответ

4

Этот фрагмент кода должен делать то, что вы хотите. Если вы просто хотите удалить элемент row3 из своего дерева, вам не нужно использовать (и понимать) всемогущий XPATH!

// -------------- building the document out of the file ----------------- 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
Document document = dbf.newDocumentBuilder().parse(new File("input.xml")); 
//------------------------------------------------------------------------ 

// -------------- finding the right node and removing it ----------------- 
Element table = document.getDocumentElement(); 
Node row3 = table.getElementsByTagName("row3").item(0); 
table.removeChild(row3); 
//------------------------------------------------------------------------ 

// -------------- printing the resulting tree to the console ------------- 
TransformerFactory tf = TransformerFactory.newInstance(); 
Transformer t = tf.newTransformer(); 
t.transform(new DOMSource(document), new StreamResult(System.out)); 
//------------------------------------------------------------------------ 
Смежные вопросы