Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I modify the contents of an XElement?

Tags:

c#

linq-to-xml

is there a simple way to modify the InnerXml of a XElement? supose we have this extremely simple xml

<planets>
    <earth></earth>
    <mercurio></mercurio>
</planets>

and we want to append some xml that come from another source that comes like a string "<continents><america/><europa/>.....blablabla" into the earth node.

I read related questions but they talk about retrieving the innerxml of a XElement and i don't understand how "modify" the actual Xelement :(

like image 607
mjsr Avatar asked Apr 08 '10 22:04

mjsr


Video Answer


2 Answers

Build the XML

planetsElement.Element("earth").Add(
    new XElement("continents",
        new XElement("america"),
        new XElement("europa")
    )   
);

Parse and Add

planetsElement.Element("earth").Add(
   XElement.Parse("<continents><america/><europa/></continents>")
);
like image 168
ChaosPandion Avatar answered Oct 14 '22 21:10

ChaosPandion


Use XElement.ReplaceNodes() to set the content of your Element. So ...

var doc = XDocument.Parse(xmlString);
var earth = doc.Root.Element("earth");

// to replace the nodes use
earth.ReplaceNodes(XElement.Parse("<continents><america/><europa/></continents>"));

// to add the nodes
earth.Add(XElement.Parse("<continents><america/><europa/></continents>"));
like image 34
AxelEckenberger Avatar answered Oct 14 '22 22:10

AxelEckenberger