How to change XML Attribute How to change XML Attribute xml xml

How to change XML Attribute


Mike; Everytime I need to modify an XML document I work it this way:

//Here is the variable with which you assign a new value to the attributestring newValue = string.Empty;XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(xmlFile);XmlNode node = xmlDoc.SelectSingleNode("Root/Node/Element");node.Attributes[0].Value = newValue;xmlDoc.Save(xmlFile);//xmlFile is the path of your file to be modified

I hope you find it useful


Using LINQ to xml if you are using framework 3.5:

using System.Xml.Linq;XDocument xmlFile = XDocument.Load("books.xml"); var query = from c in xmlFile.Elements("catalog").Elements("book")                select c; foreach (XElement book in query) {   book.Attribute("attr1").Value = "MyNewValue";}xmlFile.Save("books.xml");


If the attribute you want to change doesn't exist or has been accidentally removed, then an exception occurs. I suggest you first create a new attribute and send it to a function like the following:

private void SetAttrSafe(XmlNode node,params XmlAttribute[] attrList)    {        foreach (var attr in attrList)        {            if (node.Attributes[attr.Name] != null)            {                node.Attributes[attr.Name].Value = attr.Value;            }            else            {                node.Attributes.Append(attr);            }        }    }

Usage:

   XmlAttribute attr = dom.CreateAttribute("name");   attr.Value = value;   SetAttrSafe(node, attr);