LINQ to XML
Les objets XML
LINQ to XML est une implémentation du langage de requête pour les documents XML. L’espace de noms System.Xml.Linq expose les objets permettant de travailler avec des documents XML en mémoire de manière simple.
1. XDocument
La classe XDocument représente le document XML. Elle contient les membres pour accéder aux autres objets de type XElement, XNamespace, XComment et XAttribute.
Les deux méthodes les plus importantes de cette classe sont Load et Save. La méthode statique Load permet de charger un document XML depuis un chemin ou depuis une URL et de le stocker en mémoire, dans un objet XDocument :
XDocument xDocument = XDocument.Load(@"C:\monFichier.xml");
Le document XML peut également provenir d’un objet TextReader ou XmlReader et passé en argument à la méthode Load.
Une fois le document chargé en mémoire, il est possible de travailler avec ses propriétés :
string s1 = xDocument.Root.Name.ToString();
string s2 = xDocument.FirstNode.NodeType.ToString();
L’autre méthode importante de la classe XDocument est la méthode Save qui permet de sauvegarder le document XML en mémoire dans un fichier sur disque, un objet TextWriter ou un objet XmlWriter :
xDocument.Root.Add(new XAttribute("NouvelAttribut",
"NouvelleValeur"));
xDocument.Save(@"C:\monFichier.xml");
2. XElement
L’un des types fréquemment utilisés pour travailler avec les documents XML est XElement. Vous pouvez créer des éléments qui sont eux-mêmes des documents XML, ou créer des parties d’un...
Exécuter des requêtes avec LINQ
LINQ permet de réaliser des requêtes sur un document XML. Les objets présentés précédemment XDocument, XElement ou encore XAttribute permettent d’extraire les données souhaitées.
Les requêtes LINQ to XML suivent les mêmes principes que la syntaxe LINQ générale.
Les exemples suivants sont basés sur le fichier d’exemple LinqToXML.xml :
<?xml version="1.0" encoding="utf-8"?>
<SelMailer>
<MailServer ID="1">
<Host>mail.mondomaine.com</Host>
<Username>monUtilisateur</Username>
<Password>monMotDePasse</Password>
</MailServer>
<MailServer ID="2">
<Host>mail.mondomaine2.com</Host>
<Username>monUtilisateur2</Username>
<Password>monMotDePasse2</Password>
</MailServer>
<Sender ID="1">
<Name>mon nom</Name>
<Email>email@mondomaine.com</Email>
</Sender>
<MailServerSender MailServerID="1"...