2016-04-28 61 views
0

我有一些問題,在刪除和複製相同的XML元素。問題是我有2個XML文件,並在比較兩者後,我想刪除這些元素只在file1中,並在同一副本我想複製這些元素在一個新生成的XML。我可以刪除這些元素,但我無法將它們複製到另一個xml文件中。刪除一個XML元素和複製相同的元素在一個新的XML - 在java

下面是代碼:

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

如果您可以發佈您的XML樣本,我會提交一個最有效/最有效的代碼示例,比您發佈的笨拙的dom代碼更好... –

回答

0

移位部分,其中Map1.remove(key);到代碼的末尾。您的rootElement.appendChild(Map1.get(key))將不起作用,因爲key在刪除後不再位於Map1中。

+0

我改變了它,因爲你說「kanghj」但它不起作用。我仍然收到錯誤------ org.w3c.dom.DOMException:WRONG_DOCUMENT_ERR:節點在不同於創建它的文檔中使用。 – billu

+0

對,接下來你必須改變'appendChild'來代替使用'importNode'。看看http://stackoverflow.com/questions/3184268/org-w3c-dom-domexception-wrong-document-err-a-node-is-used-in-a-different-docu – kanghj91