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);