使用JavaDOM解析器将XML节点从一个文档复制到另一个文档
我一直在实现一个简单的算法,该算法解析XML文件并根据节点中的属性值调用其节点。我检索所有节点并将整个节点插入到已排序的ArrayList中。然后,我创建了一个新的XML文档,并创建了新的and标记,但当我尝试复制已排序的节点并将其附加到时,一个异常声明另一个文档中仍在使用它。我正在使用使用JavaDOM解析器将XML节点从一个文档复制到另一个文档,java,dom,xml-parsing,Java,Dom,Xml Parsing,我一直在实现一个简单的算法,该算法解析XML文件并根据节点中的属性值调用其节点。我检索所有节点并将整个节点插入到已排序的ArrayList中。然后,我创建了一个新的XML文档,并创建了新的and标记,但当我尝试复制已排序的节点并将其附加到时,一个异常声明另一个文档中仍在使用它。我正在使用 Node sortedCnode= cNode.cloneNode(false); //tried true as well b.appendChild(sortedCnode); 我认为我的代码试图附加整个
Node sortedCnode= cNode.cloneNode(false); //tried true as well
b.appendChild(sortedCnode);
我认为我的代码试图附加整个true。但是,我不知道该怎么做
XML如下所示
<A>
<B>
<C>
<D>
</D>
<E>
</E>
</C>
</B>
</A>
我想出来了
要将节点从源DOM复制到目标DOM,应使用下面的方法
targetBNode.appendChild(targetDOC.adoptNode(sourceCnode.cloneNode(true)));
Jherico在此提供了更完整的答案: 总而言之,您需要:
targetBNode.appendChild(targetDOC.importNode(sourceCnode, true));
您能给出一个带有属性值的示例xml,您喜欢根据它进行排序吗?我认为这里最好的方法是使用xslt转换,而不是读取和重新创建xml。