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
XmlDocumentals auch inXDocument(ü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 Auch in der Bibliothek
Scrutor für C# (.NET): Vollständige Anleitung mit Beispielen
Java-QR-Code-Generator: Bibliothek ZXing (Zebra Crossing)
gRPC für Swift (iOS/macOS): Bibliotheken, Einrichtung und Beispiele
Kryptographie in C++: Vollständiger Leitfaden zu Verschlüsselung und Hashing