Kiran
Kiran

Reputation: 8518

How to update an XML file in C#

I am having an XML file. I would like to create a new node and append it at the end of the XML file and save it back to memory.

<IntCal>
  <User>
    <Date>12/09/2012</Date>
    <Client>abcd</Client>
    <Jewellery>Others</Jewellery>
    <ROI>7.5</ROI>
    <Description>Some Description</Description>
  </User>
<IntCal>

I would like to create a new <User> element. Any idea how to do it.

 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(xmlFile);
XmlNode root_node;

//XmlNodeList nodeList = xmlDoc.SelectNodes("/IntCal/User");

XmlDocument new_node = new XmlDocument();
root_node = xmlDoc.CreateElement("IntCal");
xmlDoc.AppendChild(root_node);

Thanks

Upvotes: 0

Views: 1125

Answers (2)

Furqan Safdar
Furqan Safdar

Reputation: 16698

XmlDocument is an old school, why don't you use XDocument, simple and easy:

XDocument xDoc = XDocument.Load(xmlFile);
xDoc.Root.Add(new XElement("User", 
                  new XElement("Client", "John"), 
                  new XElement("Jewellery", "Others")));
xDoc.Save(xmlFile);

References:

  1. XDocument or XmlDocument
  2. Performance: XDocument versus XmlDocument

Upvotes: 2

itsmatt
itsmatt

Reputation: 31406

Reference: http://msdn.microsoft.com/en-us/library/fw1ys7w6(v=vs.100).aspx

    XmlElement elem = xmlDoc.CreateElement("User");
    xmlDoc.DocumentElement.AppendChild(elem);

If you want to go the LINQ route, you could do:

XDocument xDoc = XDocument.Load(xmlFile);
xDoc.Element("IntCal")
    .Add(new XElement("User"));

Personally, I'd opt for the XDocument and use LINQ but either way works.
Reference: http://msdn.microsoft.com/en-us/library/system.xml.linq.xdocument.aspx

Upvotes: 3

Related Questions