我有一个来自Node
的{{1}}。我想将Document
转换为新Node
的根节点。
我能想到的唯一方法如下:
Document
这很有效,但我觉得它很烦人。我没有看到更简洁/更直接的方式,还是我必须这样做?
答案 0 :(得分:14)
代码对我不起作用 - 但是对于related question进行了一些更改,我可以按照以下方式进行操作:
Node node = someChildNodeFromDifferentDocument;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = factory.newDocumentBuilder();
Document newDocument = builder.newDocument();
Node importedNode = newDocument.importNode(node, true);
newDocument.appendChild(importedNode);
答案 1 :(得分:6)
看起来对我来说是正确的。虽然它确实看起来通常详细,但它看起来并不比使用DOM API的其他代码更加冗长。不幸的是,它只是一个恼人的API。
当然,如果你已经从其他地方获得了DocumentBuilder
,那就更简单了 - 这会消除你的很多代码。
答案 2 :(得分:1)
来自Node的文档
Document document = node.getOwnerDocument();
答案 3 :(得分:0)
也许您可以使用此代码:
String xmlResult = XMLHelper.nodeToXMLString(node);
Document docDataItem = DOMHelper.stringToDOM(xmlResult);
答案 4 :(得分:0)
您可以简单地使用cloneNode
克隆旧文档,然后像下面这样将其类型转换为Document
:
Document newDocument = (Document) node.cloneNode(true);