如何将XmlCursor内容插入DOM Document

时间:2008-09-17 13:27:05

标签: java xml xmlbeans

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

开始时: XmlCursor poiting

<a> <b> some text </b> </a>

DOM文档:

<foo>

</foo>

最后我希望将原始DOM文档更改为:

<foo>

  <someOtherInsertedElement>

    <a> <b> some text </b> </a>

  </someOtherInsertedElement>

</foo>

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

2 个答案:

答案 0 :(得分:6)

尝试这样的事情:

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

换句话说:

  1. 从光标获取DOM节点。在这种情况下,它是一个DOMDocument,getFirstChild()也可以获取根节点。
  2. 将其导入DOMDocument。
  3. 使用DOMDocument做其他事情。
  4. 将导入的节点附加到右侧节点。
  5. 导入的原因是节点始终“属于”给定的DOMDocument。只添加原始节点会导致异常。

答案 1 :(得分:1)

我遇到了同样的问题。

这是失败的:

Node importNode = document.importNode(originalNode);

这解决了问题:

Node importNode = document.importNode(originalNode.getFirstChild());