Преобразование org.w3c.dom.Node в документ
У меня есть Node
от одного Document
. Я хочу взять этот Node
и превратить его в корень 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);
Это работает, но я чувствую, что это довольно досадно многословно. Есть ли менее подробный/более прямой способ, который я не вижу, или мне просто нужно сделать это таким образом?
Ответы
Ответ 1
Код не работал у меня - но с некоторыми изменениями из этого связанного вопроса я мог бы заставить его работать следующим образом:
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);
Ответ 2
Это похоже на меня. Хотя он выглядит в целом подробным, он, конечно, не выглядит значительно более подробным, чем другой код с использованием DOM API. Это просто раздражающий API, к сожалению.
Конечно, проще, если у вас уже есть DocumentBuilder
из другого места, что избавит вас от довольно большого количества вашего кода.
Ответ 3
Возможно, вы можете использовать этот код:
String xmlResult = XMLHelper.nodeToXMLString(node);
Document docDataItem = DOMHelper.stringToDOM(xmlResult);