2016-04-28 14 views
0

同じxml要素の削除とコピーに問題があります。問題は2つのXMLファイルがあり、両方を比較した後に、それらがfile1にある要素を削除したいのと同じコピーで、これらの要素を新しく生成されたxmlにコピーしたいということです。私は要素を削除することができますが、私は別のXMLファイルでそれらをコピーすることができません。xml要素を削除し、新しいxml - in 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);コードの端に一部:ここ

コードです。 keyは、削除した後でMap1になっていないため、rootElement.appendChild(Map1.get(key))は機能しません。

+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

関連する問題