Freigeben über


Übersicht über LINQ to XML

Aktualisiert: November 2007

XML hat sich mittlerweile als hervorragende Möglichkeit durchgesetzt, Daten in einer Vielzahl von Zusammenhängen zu formatieren. XML wird im Internet, in Konfigurationsdateien, in Microsoft Office Word-Dateien und in Datenbanken verwendet.

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. Ohne viel Mühe können Programmierer das Schreiben kompakter und leistungsfähiger Abfragen in ihrer bevorzugten Programmiersprache erlernen.

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 lädt, wie das DOM, das XML-Dokument in den Arbeitsspeicher. Sie können das Dokument abfragen und ändern, und nach dem Ändern können Sie es in einer Datei speichern oder serialisieren und über das Internet senden. 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 Abfragefunktionen von LINQ to XML sind, was ihre Funktionalität betrifft, mit denen 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 ermöglicht einen leistungsfähigen Ansatz für das 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önnten 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 stellt LINQ to XML eine verbesserte XML-Programmierungsschnittstelle bereit. Mit LINQ to XML können Sie:

  • 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 Features von einer Form in eine andere transformieren

Erstellen von XML-Strukturen

Einer der größten Vorteile der Programmierung 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 Methodenaufrufe in LINQ to XML.

Weitere Informationen dazu finden Sie unter Erstellen von XML-Strukturen.

Siehe auch

Konzepte

Übersicht über LINQ to XML in Visual Basic

Referenz

System.Xml.Linq

Weitere Ressourcen

Erste Schritte (LINQ to XML)

XML in Visual Basic