Arbeiten mit XML in C# (.NET): Vollständige Anleitung

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit XML in C# (.NET): Vollständige Anleitung



XML (eXtensible Markup Language) bleibt eines der wichtigsten Formate zum Speichern und Übertragen strukturierter Daten im .NET-Ökosystem. In C# stehen mehrere leistungsstarke Bibliotheken und Ansätze für die Arbeit mit XML zur Verfügung, vom klassischen XmlDocument bis zum modernen LINQ to XML. In diesem Artikel werden wir die wichtigsten Werkzeuge, ihre Besonderheiten und praktische Beispiele für reale Aufgaben behandeln.



1. Wichtige Bibliotheken für die Arbeit mit XML in .NET



Die .NET-Plattform bietet Entwicklern mehrere APIs zur Verarbeitung von XML:



  • System.Xml (XmlDocument, XmlReader, XmlWriter) — der klassische DOM-Ansatz (Document Object Model). Ermöglicht das Laden des gesamten XML-Dokuments in den Speicher und die Arbeit damit als Knotenbaum.
  • LINQ to XML (XDocument, XElement, XAttribute) — eine moderne, leichtere und benutzerfreundlichere API, die in LINQ integriert ist. Für die meisten neuen Projekte empfohlen.
  • XmlSerializer — für die automatische Serialisierung und Deserialisierung von C#-Objekten in XML und zurück.
  • XPath (SelectSingleNode, SelectNodes) — eine Abfragesprache zur Navigation in XML-Dokumenten. Wird sowohl in XmlDocument als auch in XDocument (über Erweiterungen) unterstützt.


2. LINQ to XML: moderner Ansatz



Die Bibliothek System.Xml.Linq (LINQ to XML) ist die bevorzugte Wahl für die Arbeit mit XML in C#. Sie bietet eine saubere Syntax, einfaches Laden und Unterstützung für LINQ-Abfragen.



Erstellen eines XML-Dokuments

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", "Krieg und Frieden"), new XElement("author", "Lew Tolstoi"), new XElement("price", 599.99m) ), new XElement("book", new XAttribute("id", "2"), new XElement("title", "Verbrechen und Strafe"), new XElement("author", "Fjodor Dostojewski"), new XElement("price", 450.00m) ) ));

doc.Save("books.xml");


Laden und Lesen von XML

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

// Alle Bücher abrufenvar 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($"Buch #{id}: {title} — {author}");}


Abfragen mit LINQ

// Bücher auswählen, die teurer als 500 Rubel sindvar 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} Rub.");}


3. Klassisches XmlDocument



Wenn Sie mit Legacy-Code arbeiten oder vollständige Kontrolle über das DOM benötigen, verwenden Sie XmlDocument aus dem Namespace System.Xml.



Laden und 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); }}


Hinzufügen eines neuen Knotens

XmlNode newBook = xmlDoc.Cre                    

Empfehlungen