C#:
Travailler avec XML

Comment faire :

using System;
using System.Xml;
using System.Xml.Linq;

class Program
{
     static void Main()
     {
        var xmlString = @"<bookstore>
                            <book>
                              <title lang=""en"">Head First C#</title>
                              <price>39.99</price>
                            </book>
                          </bookstore>";

        // Analyser la chaîne en un XDocument
        XDocument doc = XDocument.Parse(xmlString);

        // Ajouter un nouveau livre
        doc.Element("bookstore").Add(
            new XElement("book",
                new XElement("title", "Apprendre XML", new XAttribute("lang", "en")),
                new XElement("price", 29.99)
            )
        );

        // Écrire le XML dans la console
        Console.WriteLine(doc);

        // Charger le document
        XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.LoadXml(xmlString);

        // Récupérer tous les prix
        XmlNodeList prices = xmlDoc.GetElementsByTagName("price");
        foreach (XmlNode price in prices)
        {
            Console.WriteLine(price.InnerText);
        }
     }
}

// Exemple de sortie :
// <bookstore>
//  <book>
//    <title lang="en">Head First C#</title>
//    <price>39.99</price>
//  </book>
//  <book>
//    <title lang="en">Apprendre XML</title>
//    <price>29.99</price>
//  </book>
// </bookstore>
// 39.99
// 29.99

Plongée en profondeur

XML existe depuis la fin des années 90, ce qui en fait un grand-père en années technologiques. Il a été inventé pour la portabilité des données et la facilité de lecture humaine. D’autres alternatives comme JSON lui mordent désormais les talons, surtout dans les contextes web, car il est plus léger et, pour beaucoup, plus simple à manipuler. Mais XML tient toujours sa place dans de nombreux systèmes hérités et certains protocoles de communication. Avec XML, vous obtenez un schéma pour valider votre structure et des espaces de noms pour éviter les conflits de balises - des caractéristiques qui parlent de sa maturité prête pour l’entreprise.

En C#, les espaces de noms System.Xml.Linq et System.Xml sont deux gros canons pour travailler avec XML. LINQ to XML (XDocument, XElement) est plus moderne et plus élégant - vous avez vu sa magie dans l’exemple. XmlDocument vous donne l’approche DOM (Document Object Model) - un peu à l’ancienne, mais certains jurent par sa puissance.

Voir aussi