Übersicht über LINQ to XML (C#)LINQ to XML Overview (C#)

XML hat sich mittlerweile als hervorragende Möglichkeit durchgesetzt, Daten in einer Vielzahl von Kontexten zu formatieren.XML has been widely adopted as a way to format data in many contexts. Sie finden XML beispielsweise im Internet, in Konfigurationsdateien, in Microsoft Office Word-Dateien und in Datenbanken.For example, you can find XML on the Web, in configuration files, in Microsoft Office Word files, and in databases.

Mit LINQ to XML steht Ihnen ein topaktueller, völlig neu gestalteter Ansatz für die Programmierung mit XML zur Verfügung,LINQ to XML is an up-to-date, redesigned approach to programming with XML. der die DOM-Funktionen (Dokumentobjektmodell) zum Ändern von Dokumenten im Arbeitsspeicher als auch die Unterstützung für LINQLINQ-Abfrageausdrücke in sich vereint.It provides the in-memory document modification capabilities of the Document Object Model (DOM), and supports LINQLINQ query expressions. Obwohl sich diese Abfrageausdrücke syntaktisch von XPath unterscheiden, bieten sie eine ähnliche Funktionalität.Although these query expressions are syntactically different from XPath, they provide similar functionality.

LINQ to XML-EntwicklerLINQ to XML Developers

LINQ to XML eignet sich für ein breites Spektrum von Entwicklern. targets a variety of developers. Für einen ganz normalen Entwickler, der einfach eine Aufgabe erledigen möchte, vereinfacht LINQ to XML das Arbeiten mit XML, weil der Umgang mit Abfragen ähnlich wie in SQL ist.For an average developer who just wants to get something done, LINQ to XML makes XML easier by providing a query experience that is similar to SQL. Programmierer werden so innerhalb kurzer Zeit in die Lage versetzt, kompakte und dennoch leistungsfähige Abfragen in der Programmiersprache ihrer Wahl zu erstellen.With just a bit of study, programmers can learn to write succinct and powerful queries in their programming language of choice.

Professionelle Entwickler können mit LINQ to XML ihre Produktivität deutlich steigern.Professional developers can use LINQ to XML to greatly increase their productivity. Mit LINQ to XML muss weniger Code geschrieben werden, und dieser Code ist ausdrucksvoller, kompakter und leistungsstärker.With LINQ to XML, they can write less code that is more expressive, more compact, and more powerful. Sie können Abfrageausdrücke aus mehreren Datendomänen gleichzeitig verwenden.They can use query expressions from multiple data domains at the same time.

Was ist LINQ to XML?What Is LINQ to XML?

LINQ to XML ist eine LINQ-fähige XML-Programmierschnittstelle im Arbeitsspeicher, mit der Sie aus .NET Framework.NET Framework-Programmiersprachen heraus mit XML arbeiten können. is a LINQ-enabled, in-memory XML programming interface that enables you to work with XML from within the .NET Framework.NET Framework programming languages.

LINQ to XML ähnelt dem Dokumentobjektmodell (DOM) darin, dass das XML-Dokument im Arbeitsspeicher bereitgestellt wird. is like the Document Object Model (DOM) in that it brings the XML document into memory. Sie können das Dokument abfragen und ändern, und nach dem Ändern können Sie es in einer Datei speichern oder es serialisieren und über das Internet versenden.You can query and modify the document, and after you modify it you can save it to a file or serialize it and send it over the Internet. LINQ to XML unterscheidet sich aber auch vom DOM: Es stellt ein neues Objektmodell bereit, das leichter und einfacher zu handhaben ist und das sich Sprachfunktionen in C# zunutze macht.However, LINQ to XML differs from DOM: It provides a new object model that is lighter weight and easier to work with, and that takes advantage of language features in C#.

Der wichtigste Vorteil von LINQ to XML besteht in dessen Integration in Language-Integrated Query (LINQ)Language-Integrated Query (LINQ).The most important advantage of LINQ to XML is its integration with Language-Integrated Query (LINQ)Language-Integrated Query (LINQ). Diese Integration ermöglicht es Ihnen, Abfragen für das XML-Dokument im Arbeitsspeicher zu schreiben, um Auflistungen von Elementen und Attributen abzurufen.This integration enables you to write queries on the in-memory XML document to retrieve collections of elements and attributes. Die Abfragefunktion von LINQ to XML ist von ihrer Funktionalität her mit der von XPath und XQuery vergleichbar, die Syntax ist allerdings eine andere.The query capability of LINQ to XML is comparable in functionality (although not in syntax) to XPath and XQuery. Die Integration von LINQLINQ in C# bietet eine stärkere Typisierung, Syntaxüberprüfung bei der Kompilierung und verbesserte Debuggerunterstützung.The integration of LINQLINQ in C# provides stronger typing, compile-time checking, and improved debugger support.

Ein weiterer Vorteil von LINQ to XML ist die Fähigkeit, Abfrageergebnisse als Parameter für XElement-Objektkonstruktoren und XAttribute-Objektkonstruktoren zu verwenden. Dies ist ein sehr effizienter Ansatz zum Erstellen von XML-Strukturen.Another advantage of LINQ to XML is the ability to use query results as parameters to XElement and XAttribute object constructors enables a powerful approach to creating XML trees. Diese Herangehensweise, die als funktionale Konstruktion bezeichnet wird, versetzt Entwickler in die Lage, XML-Strukturen problemlos von einer Form in eine andere zu transformieren.This approach, called functional construction, enables developers to easily transform XML trees from one shape to another.

Angenommen, Ihnen liegt eine typische XML-Bestellung, wie in XML-Beispieldatei: Typische Bestellung (LINQ to XML) vor.For example, you might have a typical XML purchase order as described in Sample XML File: Typical Purchase Order (LINQ to XML). Durch die Verwendung von LINQ to XML können Sie zum Abrufen des Attributwerts der Teilenummer für jedes Artikelelement im Auftrag die folgende Abfrage ausführen:By using LINQ to XML, you could run the following query to obtain the part number attribute value for every item element in the purchase order:

IEnumerable<string> partNos =  
from item in purchaseOrder.Descendants("Item")  
select (string) item.Attribute("PartNumber");  

Ein anderes Beispiel: Sie möchten, sortiert nach Teilenummer, eine Liste der Artikel abfragen, deren Wert über 100 Dollar liegt.As another example, you might want a list, sorted by part number, of the items with a value greater than $100. Zum Abfragen dieser Informationen könnten Sie die folgende Abfrage ausführen:To obtain this information, you could run the following query:

IEnumerable<XElement> partNos =  
from item in purchaseOrder.Descendants("Item")  
where (int) item.Element("Quantity") *  
    (decimal) item.Element("USPrice") > 100  
orderby (string)item.Element("PartNumber")  
select item;  

Zusätzlich zu diesen LINQLINQ-Funktionen stellt LINQ to XML eine verbesserte XML-Programmierschnittstelle bereit.In addition to these LINQLINQ capabilities, LINQ to XML provides an improved XML programming interface. Mit LINQ to XML können Sie Folgendes durchführen:Using LINQ to XML, you can:

  • XML aus Dateien oder Streams ladenLoad XML from files or streams.

  • XML in Dateien oder Streams serialisierenSerialize XML to files or streams.

  • XML mittels funktionaler Konstruktion von Grund auf neu erstellenCreate XML from scratch by using functional construction.

  • XML mit XPath-ähnlichen Achsen abfragenQuery XML using XPath-like axes.

  • XML-Strukturen im Arbeitsspeicher mit Methoden wie Add, Remove, ReplaceWith und SetValue bearbeitenManipulate the in-memory XML tree by using methods such as Add, Remove, ReplaceWith, and SetValue.

  • XML-Strukturen mit XSD validierenValidate XML trees using XSD.

  • XML-Strukturen mit einer Kombination aus diesen Funktionen von einer Form in eine andere transformierenUse a combination of these features to transform XML trees from one shape into another.

Erstellen von XML-StrukturenCreating XML Trees

Einer der wichtigsten Vorteile der Programmierung mit LINQ to XML ist die einfache Erstellung von XML-Strukturen.One of the most significant advantages of programming with LINQ to XML is that it is easy to create XML trees. Wenn Sie z.B. eine kleine XML-Struktur erstellen möchten, können Sie einen Code wie im folgenden Beispiel schreiben:For example, to create a small XML tree, you can write code as follows:

XElement contacts =  
new XElement("Contacts",  
    new XElement("Contact",  
        new XElement("Name", "Patrick Hines"),  
        new XElement("Phone", "206-555-0144",   
            new XAttribute("Type", "Home")),  
        new XElement("phone", "425-555-0145",  
            new XAttribute("Type", "Work")),  
        new XElement("Address",  
            new XElement("Street1", "123 Main St"),  
            new XElement("City", "Mercer Island"),  
            new XElement("State", "WA"),  
            new XElement("Postal", "68042")  
        )  
    )  
);  

Weitere Informationen finden Sie unter Creating XML Trees (C#) (Erstellen von XML-Strukturen (C#)).For more information, see Creating XML Trees (C#).

Siehe auchSee Also

System.Xml.Linq
Erste Schritte (LINQ to XML)Getting Started (LINQ to XML)