题
某些 API 返回指向 XML 文档根的 XmlCursor。我需要将所有这些插入到另一个 org.w3c.DOM 表示的文档中。
开始时:Xml光标指向
<a>
<b>
some text
</b>
</a>
DOM 文档:
<富>
</foo>
最后我想将原始 DOM 文档更改如下:
<富>
<一些其他插入元素>
u003Ca>u003Cb>一些文字u003C/b>u003C/a>
</someOtherInsertedElement>
</foo>
笔记: document.importNode(cursor.getDomNode())
不起作用 - 抛出异常: 不支持错误:该实现不支持请求的对象或操作类型。
解决方案
尝试这样的事情:
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。仅添加原始节点会导致异常。
其他提示
我也有同样的问题。
这是失败的:
Node importNode = document.importNode(originalNode);
这解决了问题:
Node importNode = document.importNode(originalNode.getFirstChild());
不隶属于 StackOverflow