Reputation: 11327
How can I append an XML document to an xml node in c#?
Upvotes: 9
Views: 21266
Reputation: 403
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
Upvotes: 1
Reputation: 754220
Perhaps like this:
XmlNode node = ...... // belongs to targetDoc (XmlDocument)
node.AppendChild(targetDoc.ImportNode(xmlDoc.DocumentElement));
Marc
Upvotes: 1
Reputation: 25775
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);
Upvotes: 15
Reputation: 17010
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?
Upvotes: 0
Reputation: 36639
Yes:
XmlNode imported = targetNode.OwnerDocument.ImportNode(otherDocument.DocumentElement, true);
targetNode.AppendChild(imported);
I think this creates a clone of your document though.
Upvotes: 6