tags:

views:

2771

answers:

4

How can I append an XML document to an xml node in c#?

+1  A: 

Perhaps like this:

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

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

Marc

marc_s
AFAIK, you are required to **import* a node if it doesn't belong to the current XmlDocument before you can append it. See my answer.
Cerebrus
Yes, seems you need to call ImportNode indeed, but that *will* create a copy of the Xml document.....
marc_s
+4  A: 

Yes:

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

I think this creates a clone of your document though.

Grzenio
A: 

Once you have the root node of the XML document in question you can append it as a child node of the node in question. Does that make sense?

Gregory A Beamer
+7  A: 

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