如何将XmlCursor内容插入DOM文档

时间:2020-03-05 18:58:53  来源:igfitidea点击:

一些API返回XmlCursor指向XML文档的根。我需要将所有这些内容插入另一个org.w3c.DOM表示的文档中。

开始时:
XmlCursor poiting上
`

<a>
<b>
一些文字
</ b>
</a>
`

DOM文件:
`

<foo>

</ foo>
`

最后,我想更改原始DOM文档,如下所示:
`

<foo>

<someOtherInsertedElement>

<a>
<b>
一些文字
</ b>
</a>

</ someOtherInsertedElement>

</ foo>
`

注意:document.importNode(cursor.getDomNode())不起作用抛出异常:NOT_SUPPORTED_ERR:实现不支持所请求的对象或者操作类型。

解决方案

回答

尝试这样的事情:

Node originalNode = cursor.getDomNode();
Node importNode = document.importNode(originalNode.getFirstChild());
Node otherNode = document.createElement("someOtherInsertedElement");
otherNode.appendChild(importNode);
document.appendChild(otherNode);

因此,换句话说:

  • 从光标获取DOM节点。在这种情况下,它是一个DOMDocument,所以getFirstChild()也要获取根节点。
  • 将其导入到DOMDocument中。
  • 使用DOMDocument做其他事情。
  • 将导入的节点添加到正确的节点。

导入的原因是节点始终"属于"给定的DOMDocument。仅添加原始节点将导致异常。