2

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

开始时:XmlCursor 指向

<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:实现不支持请求的对象或操作类型。

4

2 回答 2

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. 将导入的节点附加到正确的节点。

导入的原因是节点总是“属于”给定的 DOMDocument。仅添加原始节点会导致异常。

于 2008-09-17T13:34:37.090 回答
1

我遇到了同样的问题。

这是失败的:

Node importNode = document.importNode(originalNode);

这解决了问题:

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

于 2012-11-02T16:38:11.530 回答