kjv
kjv

Reputation: 11327

Append an xml document to an xml node in C#?

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

Upvotes: 9

Views: 21266

Answers (5)

Trond
Trond

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

marc_s
marc_s

Reputation: 754220

Perhaps like this:

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

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

Marc

Upvotes: 1

Cerebrus
Cerebrus

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

Gregory A Beamer
Gregory A Beamer

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

Grzenio
Grzenio

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

Related Questions