Modify XML File C# with Example
To modify an XML file with XDocument, you load the file into a variable of type XDocument, modify it in memory, then save it, overwriting the original file. A common mistake is to modify the XML in memory and expect the file on disk to change. Given an XML file: Banana Yellow Apple Red You want to modify the Banana's color to brown: 1. We need to know the path to the file on disk. 2. One overload of XDocument.Load receives a URI (file path). 3. Since the xml file uses a namespace, we must query with the namespace AND element name. 4. A Linq query utilizing C# 6 syntax to accommodate for the possibility of null values. Every . used in this query has the potential to return a null set if the condition finds no elements. Before C# 6 you would do this in multiple steps, checking for null along the way. The result is the element that contains the Banana. Actually an IEnumerable, which is why the next step uses FirstOfDefault(). 5. Now we extract the FruitColor element out of the Fruit element we just found. Here we assume there is just one, or we only care about the first one. 6. If it is not null, we set the FruitColor to "Brown". 7. Finally, we save the XDocument, overwriting the original file on disk. // 1. string xmlFilePath = "c:\\users\\public\\fruit.xml"; // 2. XDocument xdoc = XDocument.Load(xmlFilePath); // 3. XNamespace ns = "http://www.fruitauthority.fake"; //4. var elBanana = xdoc.Descendants()?. Elements(ns + "FruitName")?. Where(x => x.Value == "Banana")?. Ancestors(ns + "Fruit"); // 5. var elColor = elBanana.Elements(ns + "FruitColor").FirstOrDefault(); // 6. if (elColor != null) { elColor.Value = "Brown"; } // 7. xdoc.Save(xmlFilePath); The file now looks like this: Banana Brown Apple Red C# 7.0 is the seventh version of C#. This version contains some new features: language support for Tuples, local functions, out var declarations, digit separators, binary literals, pattern matching, throw expressions, ref return and ref local and extended expression bodied members list. Official reference: What's new in C# 7