How to update XML nodes with new values?

Sandy picture Sandy · May 29, 2013 · Viewed 27.3k times · Source

I have a xml inside my App_Data folder. I need to edit the values in nodes of that xml. What I had tried is-

        XmlDocument xDoc = new XmlDocument();
        xDoc.Load(Server.MapPath("~/App_Data/conf.xml.config"));

        XmlNodeList aNodes = xDoc.SelectNodes("/ConfigInf");
        foreach (XmlNode node in aNodes)
        {
            XmlNode child1 = node.SelectSingleNode("Node1");
            XmlNode child2 = node.SelectSingleNode("Node2");              

            child1.InnerText = "Value1";
            child2.InnerText = "Value2";
        }

I need to re-write the xml with new values as when ever I try to access the same xml again, it should contain the new values. But when I access the xml, I still get the old(initial) values only when I call like this -Test.LoadConf(Server.MapPath("./App_Data/conf.xml.config"));. How to write to XML with new values or any alternative method like create a new xml with new values?(as I need to access this xml in a single page only)

Answer

Damith picture Damith · May 29, 2013

call save after edit, you can give diferent name if you don't need to overwrite the original

e.g. new file named as new.conf.xml.config

xDoc.Save(Server.MapPath("~/App_Data/new.conf.xml.config"));

next time you can load the original as usual

xDoc.Load(Server.MapPath("~/App_Data/conf.xml.config"));