2016-04-28 3 views
0

Ich habe ein Problem beim Löschen und Kopieren der gleichen XML-Element. Das Problem ist, ich habe 2 xml-Dateien und nach dem Vergleich beider möchte ich die Elemente löschen, die nur in file1 sind und auf der gleichen Kopie möchte ich diese Elemente in einem neu generierten XML kopieren. Ich kann die Elemente löschen, aber ich kann sie nicht in eine andere XML-Datei kopieren. HierLöschen Sie ein XML-Element und kopieren Sie das gleiche Element in ein neues xml - in Java

ist der Code:

for (Map.Entry<String, Element> entry : Map1.entrySet()) { 
    String key = entry.getKey(); 

    if (!Map2.containsKey(key)) { 
     Map1.remove(key); 
     DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder builder = dbf.newDocumentBuilder(); 
     Document doc= builder.newDocument(); 
     Element rootElement = 
      doc.createElementNS("", "missing"); 
     doc.appendChild(rootElement); 
     //here i want to copy the deleted element in new xml file.  
     //rootElement.appendChild(Map1.get(key)); 
     TransformerFactory tf = TransformerFactory.newInstance(); 
     Transformer transformer = tf.newTransformer(); 
     transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
     DOMSource source = new DOMSource(doc); 
     StreamResult newXml = new StreamResult(new File("C:/user/desktop/Output.xml")); 
     transformer.transform(source, newXml); 
    } 
} 
+0

Wenn Sie ein Beispiel Ihres XML posten können, werde ich ein Codebeispiel einreichen, das am effizientesten ist/kewlest, weit besser als der unhandliche dom Code, den Sie gepostet haben ... –

Antwort

0

Verschiebung der Teil, wo Map1.remove(key); bis zum Ende des Codes. Ihr rootElement.appendChild(Map1.get(key)) würde nicht funktionieren, weil key nicht mehr in Map1 ist, nachdem Sie es entfernt haben.

+0

ich änderte es, als Sie sagten "kanghj" aber es hat nicht funktioniert. Ich bekomme immer noch den Fehler ------ org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: Ein Knoten wird in einem anderen Dokument als das, das es erstellt hat, verwendet. – billu

+0

Richtig, als nächstes müssen Sie 'appendChild' ändern, um stattdessen' ImportNode' zu ​​verwenden. Sehen Sie sich http://stackoverflow.com/questions/3184268/org-w3c-dom-domexception-wrong-document-err-a-node-is-used-in-a-different-docu an – kanghj91

Verwandte Themen