Modificarea documentului în LINQ to XML
Să luăm fișierul XML people.xml din temele anterioare:
<?xml version="1.0" encoding="utf-8"?>
<people>
<person name="Tom">
<company>Microsoft</company>
<age>37</age>
</person>
<person name="Bob">
<company>Google</company>
<age>41</age>
</person>
</people>
Adăugarea de date
Pentru a adăuga date într-un document XML, la obiectul XElement se aplică metoda Add(), în care se transmite obiectul ce urmează a fi adăugat:
using System.Xml.Linq;
XDocument xdoc = XDocument.Load("people.xml");
XElement? root = xdoc.Element("people");
if(root != null)
{
// adăugăm un nou element
root.Add(new XElement("person",
new XAttribute("name", "Sam"),
new XElement("company", "JetBrains"),
new XElement("age", 28)));
xdoc.Save("people.xml");
}
// afișăm documentul XML în consolă
Console.WriteLine(xdoc);
În urma execuției, se va forma și salva pe disc un nou document:
<people>
<person name="Tom">
<company>Microsoft</company>
<age>37</age>
</person>
<person name="Bob">
<company>Google</company>
<age>41</age>
</person>
<person name="Sam">
<company>JetBrains</company>
<age>28</age>
</person>
</people>
Modificarea datelor
Pentru a modifica datele într-un document XML, trebuie să obținem elementul care trebuie schimbat și apoi putem edita valorile atributelor sau elementelor încorporate. Să modificăm elementul person, unde atributul name = "Tom":
using System.Xml.Linq;
XDocument xdoc = XDocument.Load("people.xml");
// obținem elementul person cu name = "Tom"
var tom = xdoc.Element("people")?
.Elements("person")
.FirstOrDefault(p => p.Attribute("name")?.Value == "Tom");
if(tom != null)
{
// schimbăm atributul name
var name = tom.Attribute("name");
if (name != null) name.Value = "Tomas";
// schimbăm elementul încorporat age
var age = tom.Element("age");
if (age != null) age.Value = "22";
xdoc.Save("people.xml");
}
// afișăm documentul XML în consolă
Console.WriteLine(xdoc);
În urma execuției, se va forma și salva pe disc un nou document:
<people>
<person name="Tomas">
<company>Microsoft</company>
<age>22</age>
</person>
<person name="Bob">
<company>Google</company>
<age>41</age>
</person>
<person name="Sam">
<company>JetBrains</company>
<age>28</age>
</person>
</people>
Ștergerea datelor
Pentru a șterge date dintr-un document XML, la obiectul XElement care urmează să fie șters se apelează metoda Remove(). De exemplu, să ștergem elementul person, unde atributul name = "Bob":
using System.Xml.Linq;
XDocument xdoc = XDocument.Load("people.xml");
XElement? root = xdoc.Element("people");
if (root != null)
{
// obținem elementul person cu name = "Bob"
var bob = root.Elements("person")
.FirstOrDefault(p => p.Attribute("name")?.Value == "Bob");
// și îl ștergem
if (bob != null)
{
bob.Remove();
xdoc.Save("people.xml");
}
}
// afișăm documentul XML în consolă
Console.WriteLine(xdoc);
În urma execuției, se va forma și salva pe disc un nou document:
<people>
<person name="Tomas">
<company>Microsoft</company>
<age>22</age>
</person>
<person name="Sam">
<company>JetBrains</company>
<age>28</age>
</person>
</people>
De asemenea, dacă trebuie să ștergeți un atribut, la obiectul XAttribute se aplică metoda Remove().