将org.w3c.dom.Node转换为Document

我有一个DocumentNode 。 我想将该Node转换为新Document的根节点。

我能想到的唯一方法如下:

 Node node = someChildNodeFromDifferentDocument; DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); factory.setNamespaceAware(true); DocumentBuilder builder = factory.newDocumentBuilder(); Document newDocument = builder.newDocument(); newDocument.importNode(node); newDocument.appendChild(node); 

这很有效,但我觉得这很烦人。 我没有看到更简洁/更直接的方式,还是我必须这样做?

代码对我不起作用 – 但是从这个相关问题的一些变化我可以得到它如下工作:

 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); 

这看起来对我来说是正确的。 虽然它看起来通常很冗长,但它看起来并不比使用DOM API的其他代码更加冗长。 不幸的是,它只是一个烦人的API。

当然,如果你已经从其他地方获得了一个DocumentBuilder ,它就会变得更简单 – 这将消除你的很多代码。

也许你可以使用这段代码:

 String xmlResult = XMLHelper.nodeToXMLString(node); Document docDataItem = DOMHelper.stringToDOM(xmlResult);