Reputation: 1290
I have a string that contains an XML, lets say like this:
<Novels>
<Book>
<Title>Cat in hat</Title>
<Price>12</Price>
</Book>
</Novels>
I want to make an XDocument that looks like this:
<Booklist>
<Novels>
<Book>
<Title>Cat in hat</Title>
<Price>12</Price>
</Book>
</Novels>
</Booklist>
I can load the xml string into an XDocument using XDocument doc = XDocument.Parse(xmlString);
How would I load the document under a new root. I can think of something like creating a new XDocument with the root I want and then using a for loop to add the nodes as children, but is there an easier way of doing this?
Upvotes: 11
Views: 18104
Reputation: 125610
var doc = new XDocument(new XElement("Booklist", source.Root));
It does not require any parsing at all. There is a deep copy of XElement made, so there is also no references between old and new documents.
Upvotes: 8
Reputation: 22794
XDocument yourResult = new XDocument(new XElement("Booklist", doc.Root));
Upvotes: 22