使用Java DOM Parser将XML节点从文档复制到另一个文档

时间:2014-08-07 13:28:20

标签: java dom xml-parsing

我一直在实现一个简单的算法,该算法解析XML文件并根据节点中的属性值来求助其节点。我检索所有节点并将整个节点插入到已排序的ArrayList中。然后我创建了一个新的XML文档并创建了新的标签,但是当我尝试复制已排序的节点并将其追加到时,一个异常表明它仍在另一个文档中使用。我正在使用

Node sortedCnode= cNode.cloneNode(false); //tried true as well
b.appendChild(sortedCnode);

我认为我的代码试图追加全部真实。但是,我不知道这样做的正确方法

XML如下所示

<A>
  <B>
    <C>
      <D>
      </D>
      <E>
      </E>
    </C>
  </B>
</A>

2 个答案:

答案 0 :(得分:1)

我想通了

应该使用

将源DOM中的节点复制到目标DOM

targetBNode.appendChild(targetDOC.adoptNode(sourceCnode.cloneNode(true)));

答案 1 :(得分:0)

Jherico提供了更完整的答案:How do I copy DOM nodes from one document to another in Java

总结一下,您需要:

  1. 复制节点
  2. 将副本导入目标文档
  3. 将副本放在新文档中
  4. Jherico提供了两种方法,一种使用cloneNode()和adoptNode(),它与接受的答案相同。但是,在Document上使用importNode()存在一种快捷方法,它可以为您执行这两种操作。

    targetBNode.appendChild(targetDOC.importNode(sourceCnode, true));