【问题标题】:Delete an xml Element and copy the same element in a new xml -- in java删除一个 xml 元素并将相同的元素复制到一个新的 xml 中——在 java 中
【发布时间】:2016-04-28 15:44:24
【问题描述】:

我在删除和复制同一个 xml 元素时遇到了一些问题。问题是我有 2 个 xml 文件,在比较两者之后,我想删除那些仅在 file1 中的元素,并且在同一个副本中,我想将这些元素复制到新生成的 xml 中。我可以删除元素,但无法将它们复制到另一个 xml 文件中。

代码如下:

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);
    }
}

【问题讨论】:

  • 如果您可以发布您的 XML 示例,我将提交一个最高效/最简洁的代码示例,比您发布的笨拙的 dom 代码要好得多...

标签: java xml dom


【解决方案1】:

Map1.remove(key); 所在的部分移至代码末尾。您的rootElement.appendChild(Map1.get(key)) 将无法工作,因为在您删除它后key 不再位于Map1 中。

【讨论】:

  • 我改变了它,因为你说“kanghj”,但它没有用。我仍然收到错误 ------ org.w3c.dom.DOMException: WRONG_DOCUMENT_ERR: A node is used in a different document than the one.
  • 对,接下来您必须将 appendChild 更改为在它之前使用 importNode。看看stackoverflow.com/questions/3184268/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多