MySQL Java JavaScript PHP Python HTML-CSS C-sharp

LINQ to XML: Crearea unui document XML

O altă abordare pentru lucrul cu XML este tehnologia LINQ to XML. Întreaga funcționalitate LINQ to XML se regăsește în spațiul de nume System.Xml.Linq. Să analizăm principalele clase din acest spațiu de nume:

  • XAttribute: reprezintă un atribut al unui element XML
  • XComment: reprezintă un comentariu
  • XDocument: reprezintă întregul document XML
  • XElement: reprezintă un element XML individual

Clasa principală este XElement, care permite obținerea elementelor încorporate și gestionarea acestora. Printre metodele sale, se remarcă următoarele:

  • Add(): adaugă un nou atribut sau element
  • Attributes(): returnează o colecție de atribute pentru acest element
  • Elements(): returnează toate elementele copil ale acestui element
  • Remove(): elimină acest element din obiectul părinte
  • RemoveAll(): elimină toate elementele copil și atributele acestui element

Acum, să folosim funcționalitatea LINQ to XML și să creăm un nou document XML:

using System.Xml.Linq;

XDocument xdoc = new XDocument();
// creăm primul element person
XElement tom = new XElement("person");
// creăm atributul name
XAttribute tomNameAttr = new XAttribute("name", "Tom");
// creăm două elemente company și age
XElement tomCompanyElem = new XElement("company", "Microsoft");
XElement tomAgeElem = new XElement("age", 37);
// adăugăm atributul și elementele în primul element person
tom.Add(tomNameAttr);
tom.Add(tomCompanyElem);
tom.Add(tomAgeElem);

// creăm al doilea element person
XElement bob = new XElement("person");
// creăm pentru el atributul name
XAttribute bobNameAttr = new XAttribute("name", "Bob");
// și două elemente - company și age
XElement bobCompanyElem = new XElement("company", "Google");
XElement bobAgeElem = new XElement("age", 41);
bob.Add(bobNameAttr);
bob.Add(bobCompanyElem);
bob.Add(bobAgeElem);
// creăm elementul rădăcină
XElement people = new XElement("people");
// adăugăm cele două elemente person în elementul rădăcină
people.Add(tom);
people.Add(bob);
// adăugăm elementul rădăcină în document
xdoc.Add(people);
// salvăm documentul
xdoc.Save("people.xml");

Console.WriteLine("Data saved");

Pentru a crea un document, trebuie să creăm un obiect al clasei XDocument. Acesta este obiectul de cel mai înalt nivel din documentul XML.

Elementele sunt create folosind constructorul clasei XElement. Constructorul are mai multe versiuni suprasolicitate. Primul parametru al constructorului transmite numele elementului, de exemplu, person. Al doilea parametru transmite valoarea acestui element.

Crearea unui atribut este similară cu crearea unui element. Apoi, toate atributele și elementele sunt adăugate în elementele person folosind metoda Add().

Deoarece documentul XML trebuie să aibă un singur element rădăcină, toate elementele person sunt adăugate într-un container - elementul people.

La final, elementul rădăcină este adăugat în obiectul XDocument, iar acest obiect este salvat pe disc într-un fișier XML folosind metoda Save().

Dacă deschidem fișierul salvat people.xml, vom vedea următorul conținut:

<?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>

Constructorul clasei XElement permite setarea unui grup de obiecte care vor face parte din element. Astfel, exemplul anterior poate fi scurtat în felul următor:

using System.Xml.Linq;

XDocument xdoc = new XDocument(new XElement("people",
   new XElement("person",
       new XAttribute("name", "Tom"),
       new XElement("company", "Microsoft"),
       new XElement("age", 37)),
   new XElement("person",
       new XAttribute("name", "Bob"),
       new XElement("company", "Google"),
       new XElement("age", 41))));
xdoc.Save("people2.xml");

Console.WriteLine("Data saved");

Acest cod creează și salvează un document XML similar celui din exemplul anterior, dar într-un mod mai concis.

← Lecția anterioară Lecția următoare →