Update existing XML file in C#

7.4k Views Asked by At

I tried to update this small xml example file without success. It is not giving me any error but the file remains unchanged. Any ideas ?

Thanks

XML Sample:

<test>
  <user>John Doe</user>
  <user>Jane Doe</user>
</test>

C# Code

 XmlDocument doc = new XmlDocument();
    doc.Load("../../../test.xml");

    XmlNode sNode = doc.SelectSingleNode("/test/user");
    XmlAttribute users = sNode.Attributes["user"];

    if (users != null)
    {             
            string currentValue = users.Value;            
            if (string.IsNullOrEmpty(currentValue))
            {
            users.Value = "Thomas";
            }
    }
    doc.Save("../../../test1.xml");
3

There are 3 best solutions below

0
Timon Post On

This is how I changed the value inside a node:

        XmlNode node= _doc.SelectSingleNode("test/user[1]"); // [index of user node]
        node.InnerText = value;
        _doc.Save(@"path");
1
Quentin Roger On

Your user node doesn't have any attribute in your XML file :

So users is null here :

 XmlAttribute users = sNode.Attributes["user"];

You should test if sNode != null

 if (sNode != null){
    ....
 }
0
Thomas On

This works now perfectly:

XmlDocument doc = new XmlDocument();
doc.Load("../../../test.xml");

XmlNode node = doc.SelectSingleNode("test/user[1]"); // [index of user node]
node.InnerText = "thomas";

doc.Save("../../../test1.xml");

Thank you