Freigeben über


Übersicht über LINQ to XML

XML hat sich mittlerweile als hervorragende Möglichkeit durchgesetzt, Daten in einer Vielzahl von Kontexten zu formatieren. Sie finden XML beispielsweise im Internet, in Konfigurationsdateien, in Microsoft Office Word-Dateien und in Datenbanken.

Mit LINQ to XML steht Ihnen ein topaktueller, völlig neu gestalteter Ansatz für die Programmierung mit XML zur Verfügung, der die DOM-Funktionen (Dokumentobjektmodell) zum Ändern von Dokumenten im Arbeitsspeicher als auch die Unterstützung für LINQ-Abfrageausdrücke in sich vereint. Obwohl sich diese Abfrageausdrücke syntaktisch von XPath unterscheiden, bieten sie eine ähnliche Funktionalität.

LINQ to XML-Entwickler

LINQ to XML eignet sich für ein breites Spektrum von Entwicklern. 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. Programmierer werden so innerhalb kurzer Zeit in die Lage versetzt, kompakte und dennoch leistungsfähige Abfragen in der Programmiersprache ihrer Wahl zu erstellen.

Professionelle Entwickler können mit LINQ to XML ihre Produktivität deutlich steigern. Mit LINQ to XML muss weniger Code geschrieben werden, und dieser Code ist ausdrucksvoller, kompakter und leistungsstärker. Sie können Abfrageausdrücke aus mehreren Datendomänen gleichzeitig verwenden.

Was ist LINQ to XML?

LINQ to XML ist eine LINQ-fähige XML-Programmierschnittstelle im Arbeitsspeicher, mit der Sie aus .NET Framework-Programmiersprachen heraus mit XML arbeiten können.

LINQ to XML ähnelt dem Dokumentobjektmodell (DOM) darin, dass das XML-Dokument im Arbeitsspeicher bereitgestellt wird. 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. LINQ to XML unterscheidet sich aber auch von DOM: Es stellt ein neues Objektmodell bereit, das leichter und einfacher zu handhaben ist und das sich Sprachverbesserungen in Visual C# 2008 zunutze macht.

Der wichtigste Vorteil von LINQ to XML besteht in dessen Integration in Sprachintegrierte Abfrage (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. 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. Die Integration von LINQ in Visual C# 2008 bietet eine stärkere Typisierung, Syntaxüberprüfung bei der Kompilierung und verbesserte Debuggerunterstützung.

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. Diese Herangehensweise, die als funktionale Konstruktion bezeichnet wird, versetzt Entwickler in die Lage, XML-Strukturen problemlos von einer Form in eine andere zu transformieren.

Nehmen Sie das Beispiel eines typischen XML-Auftrags, wie er in XML-Beispieldatei: Typischer Auftrag (LINQ to XML) beschrieben wird. 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:

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

In Visual Basic kann die gleiche Abfrage wie folgt geschrieben werden:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Select item.@PartNumber

Ein anderes Beispiel: Sie möchten, sortiert nach Teilenummer, eine Liste der Artikel abfragen, deren Wert über 100 Dollar liegt. Zum Abfragen dieser Informationen können Sie die folgende Abfrage ausführen:

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;

In Visual Basic kann die gleiche Abfrage wie folgt geschrieben werden:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Where (item.<Quantity>.Value * _
           item.<USPrice>.Value) > 100 _
    Order By item.<PartNumber>.Value _
    Select item

Zusätzlich zu diesen LINQ-Funktionen stelltLINQ to XML eine verbesserte XML-Programmierschnittstelle bereit. Mit LINQ to XML können Sie Folgendes durchführen:

  • XML aus Dateien oder Streams laden

  • XML in Dateien oder Streams serialisieren

  • XML mittels funktionaler Konstruktion von Grund auf neu erstellen

  • XML mit XPath-ähnlichen Achsen abfragen

  • XML-Strukturen im Arbeitsspeicher mit Methoden wie Add, Remove, ReplaceWith und SetValue bearbeiten

  • XML-Strukturen mit XSD validieren

  • XML-Strukturen mit einer Kombination aus diesen Funktionen von einer Form in eine andere transformieren

Erstellen von XML-Strukturen

Einer der bedeutendsten Vorteile beim Programmieren mit LINQ to XML ist die einfache Erstellung von XML-Strukturen. Wenn Sie z. B. eine kleine XML-Struktur erstellen möchten, können Sie C#-Code wie im folgenden Beispiel schreiben:

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")
            )
        )
    );

In Visual Basic ist der Code zum Konstruieren der XML-Struktur noch einfacher, weil er ein XML-Literal verwendet:

Dim contacts = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="Home">206-555-0144</Phone>
            <Phone Type="Work">425-555-0145</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Der Visual Basic-Compiler übersetzt XML-Literale in LINQ to XML-Methodenaufrufe.

Weitere Informationen finden Sie unter Erstellen von XML-Strukturen.

Siehe auch

Referenz

System.Xml.Linq

Konzepte

Übersicht über LINQ to XML in Visual Basic

Weitere Ressourcen

Erste Schritte (LINQ to XML)

XML in Visual Basic