Travailler avec XML en C# (.NET) : Guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec XML en C# (.NET) : Guide complet



XML (eXtensible Markup Language) reste l'un des formats clés pour le stockage et la transmission de données structurées dans l'écosystème .NET. En C#, plusieurs bibliothèques et approches puissantes sont disponibles pour travailler avec XML, allant du classique XmlDocument au moderne LINQ to XML. Dans cet article, nous allons passer en revue les principaux outils, leurs particularités et fournir des exemples pratiques pour des tâches réelles.



1. Bibliothèques principales pour travailler avec XML dans .NET



La plateforme .NET offre aux développeurs plusieurs API pour le traitement du XML :



  • System.Xml (XmlDocument, XmlReader, XmlWriter) — l'approche DOM classique (Document Object Model). Permet de charger l'intégralité du document XML en mémoire et de travailler avec comme un arbre de nœuds.
  • LINQ to XML (XDocument, XElement, XAttribute) — une API moderne, plus légère et pratique, intégrée à LINQ. Recommandée pour la plupart des nouveaux projets.
  • XmlSerializer — pour la sérialisation et la désérialisation automatiques d'objets C# en XML et vice versa.
  • XPath (SelectSingleNode, SelectNodes) — un langage de requêtes pour naviguer dans un document XML. Pris en charge à la fois par XmlDocument et XDocument (via des extensions).


2. LINQ to XML : une approche moderne



La bibliothèque System.Xml.Linq (LINQ to XML) est le choix privilégié pour travailler avec XML en C#. Elle offre une syntaxe propre, un chargement léger et la prise en charge des requêtes LINQ.



Création d'un document XML

using System.Xml.Linq;

XDocument doc = new XDocument( new XDeclaration("1.0", "utf-8", "yes"), new XElement("books", new XElement("book", new XAttribute("id", "1"), new XElement("title", "Война и мир"), new XElement("author", "Лев Толстой"), new XElement("price", 599.99m) ), new XElement("book", new XAttribute("id", "2"), new XElement("title", "Преступление и наказание"), new XElement("author", "Фёдор Достоевский"), new XElement("price", 450.00m) ) ));

doc.Save("books.xml");


Chargement et lecture du XML

XDocument loadedDoc = XDocument.Load("books.xml");

// Récupération de tous les livresvar allBooks = loadedDoc.Descendants("book");

foreach (var book in allBooks){ string id = book.Attribute("id")?.Value; string title = book.Element("title")?.Value; string author = book.Element("author")?.Value; Console.WriteLine($"Livre #{id}: {title} — {author}");}


Requêtes avec LINQ

// Sélection des livres coûtant plus de 500 roublesvar expensiveBooks = from book in loadedDoc.Descendants("book")                     where (decimal)book.Element("price") > 500                     select new                     {                         Title = (string)book.Element("title"),                         Price = (decimal)book.Element("price")                     };

foreach (var b in expensiveBooks){ Console.WriteLine($"{b.Title}: {b.Price} руб.");}


3. XmlDocument classique



Si vous travaillez avec du code hérité ou si vous avez besoin d'un contrôle total sur le DOM, utilisez XmlDocument de l'espace de noms System.Xml.



Chargement et navigation

using System.Xml;

XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load("books.xml");

XmlNode root = xmlDoc.DocumentElement;XmlNodeList bookNodes = root.SelectNodes("book");

foreach (XmlNode node in bookNodes){ XmlNode titleNode = node.SelectSingleNode("title"); if (titleNode != null) { Console.WriteLine(titleNode.InnerText); }}


Ajout d'un nouveau nœud

XmlNode newBook = xmlDoc.Cre                    

Recommendations