将xml节点复制到Java中的新文档

时间:2012-11-29 16:58:14

标签: java xml dom

我整天都在努力,无法找到解决方案!

我想读一个xml

<test>
    <data></data>
</test>

并编辑某些数据值,我可以这样做并保存好。

但是我希望在再次更改值之前获取这些更改的值并将它们添加到新文档中。所以我最终得到一份新文件

<test>
    <data></data>
</test>
<test>
    <data></data>
</test>

我可以使用此代码

创建节点的ArrayList
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer tx   = tfactory.newTransformer();
DOMSource source = new DOMSource(testDoc);
DOMResult output = new DOMResult();
tx.transform(source,output);
nodes.add(output.getNode());

所以我现在有一个节点的ArrayList,每个节点都有从模板编辑的唯一数据,但我似乎无法将它们写入一个新的空白文档。这就是我目前的

for (Node n:nodes){
    Element root = templateDoc.getDocumentElement();
    Node copyNode = templateDoc.importNode(n, true);
    root.appendChild(copyNode);
}

尝试写出templateDoc

希望有人可以提供帮助!

1 个答案:

答案 0 :(得分:0)

有效的XML文档可能只有一个root element。如果<test>是根元素,则根目录中不能包含两个<test>元素。你需要这样的东西:

<tests>
 <test>
  <data>...</data>
 </test>
 <test>
  <data>...</data>
 </test>
</tests>