web-dev-qa-db-ja.com

org.w3c.dom.Nodeをドキュメントに変換します

1つのNodeからDocumentがあります。その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);

これは機能しますが、かなり冗長な感じがします。私が見ていない冗長性の少ない/より直接的な方法はありますか、それともこの方法で行う必要がありますか?

15
Svish

コードは私には機能しませんでした-しかし、これからいくつかの変更を加えて 関連する質問 私はそれを次のように機能させることができました:

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);
14
Mark Butler

それは私にはほぼ正しいように見えます。見た目は一般的に冗長ですが、DOMAPIを使用する他のコードよりも大幅に冗長に見えることは確かではありません。残念ながら、これは単なる迷惑なAPIです。

もちろん、他の場所からDocumentBuilderをすでに取得している場合は、より簡単です。これにより、かなり多くのコードが削除されます。

6
Jon Skeet

多分あなたはこのコードを使うことができます:

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

ノードからのドキュメント

Document document = node.getOwnerDocument();
0
Armer B.