2009-03-11 24 views

答えて

13

XmlDocument基本的にXmlNodeあるので、あなたは、あなたが他のXmlNodeのために行うのと同じようにそれを追加することができます。ただし、XmlNodeが対象文書に属していないため、ImportNodeメソッドを使用し、次にを追加する必要があります。

// xImportDoc is the XmlDocument to be imported. 
// xTargetNode is the XmlNode into which the import is to be done. 

XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc, true); 
xTargetNode.AppendChild(xChildNode); 
+2

ああ、xSrcNodeは何ですか? エラーメッセージ:「ドキュメント」タイプのノードをインポートできません。 xTargetNodeとはどのようなタイプですか? – fijiaaron

+2

@fijiaaronドキュメントからルート要素を選択する必要があります。 'XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc.DocumentElement、true);' – nmat

+0

XmlDocが現在XmlNodeとして入力されている場合、またはあなたはXmlNodeを代わりに使うことができます。xmlNode xChildNode = xSrcNode.ImportNode(xImportDoc.OwnerDocument.DocumentElement、true); ' –

1

XmlNode node = ...... // belongs to targetDoc (XmlDocument) 

node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement)); 

マルク・

+0

は、私の知る限り、あなたは**インポート*ノードに必要とされているお役に立てば幸いです追加することができます。私の答えを見てください。 – Cerebrus

+0

はい、実際にImportNodeを呼び出す必要があるようですが、* XML文書のコピーを作成します..... –

5

はい:

XmlNode imported = targetNode.OwnerDocument.ImportNode(otherDocument.DocumentElement, true); 
targetNode.AppendChild(imported); 

私はこれはしかし、あなたの文書のクローンを作成すると思います。

0

問題のXML文書のルートノードを取得したら、それを問題のノードの子ノードとして追加できます。それは理にかなっていますか?

1

あなたは次のような構成を持っているとしましょう:

次のような構造がのXmlElementという名前のXMLELEMENTに格納されています

</root> 

と次のような構造がFooNodeという名前のXmlNodeオブジェクトに格納されます;

<foo> 
    <bar>This is a test</bar> 
    <baz>And this is another test</baz> 
</foo> 

その後、あなたは次のようにします。

XmlNode node = doc.ImportNode(FooNode.SelectSingleNode("foo"), true); 
xmlElement.AppendChild(node); 

が、それは前に現在のXmlDocumentに属していない場合は、誰か

関連する問題