Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Edit specific Element in XDocument

Tags:

c#

xml

linq

I recently started learning C# and I ran into a problem using XML.Linq to store data. I hope the question is understandable as I am not familiar with all the correct terms yet and as English isn't my first language.

I read a lot of Questions/googled but I can not figure it out myself.

I want to update an existing XDocument File that looks like this:

<Data>   <IDCounter>2</IDCounter>   <Highscores>      .......   </Highscores>   <savegames>     <savegame>        <IdNumber>1</IdNumber>        <salutation>Mr</salutation>        <prename>Prename1</prename>        <surname>Surname1</surname>        <maximumbalance>100</maximumbalance>        <balance>100</balance>     </savegame>     <savegame>        <IdNumber>2</IdNumber>        <salutation>Mr</salutation>        <prename>Prename2</prename>        <surname>Surname2</surname>        <maximumbalance>100</maximumbalance>        <balance>100</balance>      </savegame>    </savegames> </Data>  

What is the easiest way to change a value in a specific Element?

Let's say I want to change the balance of a specific savegame.

I want to access the savegame by IdNumber (these numbers are unique)

Then I want to change the value of balance (for example to 50) and then save these changes to my document.

like image 292
Matthias Weiß Avatar asked Aug 29 '13 10:08

Matthias Weiß


1 Answers

With using System.Xml.Linq; it becomes

 var doc = XElement.Load(fileName);  var saveGame = doc       .Element("savegames")       .Elements("savegame")       .Where(e => e.Element("IdNumber").Value == "2")       .Single();   saveGame.Element("balance").Value = "50";   doc.Save(fileName); 
like image 116
Henk Holterman Avatar answered Sep 22 '22 02:09

Henk Holterman