我有以下代码:
private static Node GetText(String name)
{
Node ret = textRoots.get(name);
if (ret!=null)
{
ret=ret.cloneNode(true);
}
return ret;
}
在另一种方法中,我有以下几行:
Node textNode = GetText(name);
node.replaceChild(textNode, inner);
即使 Node 和文本来自的原始文档碰巧是不同的文档,我也希望它能够工作;我该怎么做?
最佳答案
这很大程度上取决于您想做什么!
如果您只想在其他文档中拥有该节点,您可以使用 importNode(...)
方法:
// someNode was created by another document
Node someNodeNew = doc2.importNode(someNode, true);
现在您只需在 doc2
中的某处添加 someNodeNew
即可。
这样做将创建旧节点的副本!
<小时/>如果您想将节点(包括所有子子节点)移动到另一个文档,您有两种可能性:
- 使用文档
adoptNode(...)
方法:
如果有效,它将更改节点的所有者文档并将其从旧文档中删除。使用此方法只有一个问题:
Javadoc 指出:
Attempts to adopt a node from another document to this document. If supported, it changes the owner document [...]
所以这个方法不一定要支持,而且可能会失败!
- 第二个(我认为更好)选项:
导入节点,然后将其从旧树中删除:
// someNode was created by another document
Node someNodeNew = doc2.importNode(someNode, true);
if (someNode.getParentNode() != null)
someNode.getParentNode().removeChild(someNode);
someNode = someNodeNew ;
关于java - 如何将一个 XML 文档中的节点克隆添加到另一个 XML 文档中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34607012/