How can I append an XML document to an xml node in c#?
5 Answers
An XmlDocument is basically an XmlNode, so you can append it just like you would do for any other XmlNode. However, the difference arises from the fact that this XmlNode does not belong to the target document, therefore you will need to use the ImportNode method and then perform the append.
// 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);
3 Comments
fijiaaron
ah yes, but what's xSrcNode? Why do I get the error message: Cannot import nodes of type 'Document'. What type is xTargetNode?
nmat
@fijiaaron You need to select the root element from the doc:
XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc.DocumentElement, true);Zain Rizvi
If your XmlDoc is currently typed as an XmlNode, or if you're trying to import an XmlNode you can instead do
XmlNode xChildNode = xSrcNode.ImportNode(xImportDoc.OwnerDocument.DocumentElement, true);Perhaps like this:
XmlNode node = ...... // belongs to targetDoc (XmlDocument)
node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement));
Marc
Let's say you have the following construction:
The following structure is stored in an XmlElement named xmlElement:
</root>
and the following structure is stored in an XmlNode object named FooNode;
<foo>
<bar>This is a test</bar>
<baz>And this is another test</baz>
</foo>
Then you do the following:
XmlNode node = doc.ImportNode(FooNode.SelectSingleNode("foo"), true);
xmlElement.AppendChild(node);
Hope it helps someone