Modify XML File C# with Example

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: 
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"; 
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. 
The file now looks like this: 

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 

0 Comment's

Comment Form