Übersicht über LINQ to XML

LINQ to XML stellt eine XML-Programmierschnittstelle im Arbeitsspeicher bereit, die das .NET Language-Integrated Query-Framework (LINQ) nutzt. LINQ to XML verwendet die neuesten .NET-Funktionen und ist mit einer aktualisierten und neu gestalteten DOM-XML-Programmierschnittstelle vergleichbar.

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.

LINQ to XML ist ein aktueller, neu gestalteter Ansatz für die Programmierung mit XML. Dabei werden die arbeitsspeicherinternen Dokumentänderungsfunktionen des Dokumentobjektmodells (DOM) bereitgestellt und LINQ-Abfrageausdrücke unterstützt. Obwohl sich diese Abfrageausdrücke syntaktisch von XPath unterscheiden, bieten sie eine ähnliche Funktionalität.

LINQ to XML Entwickler

LINQ to XML zielt auf eine Vielzahl von Entwicklern ab. Für einen durchschnittlichen Entwickler, der einfach etwas erledigen möchte, erleichtert LINQ to XML XML, indem eine Abfrageumgebung bereitgestellt wird, die mit SQL vergleichbar ist. Programmierer werden so innerhalb kurzer Zeit in die Lage versetzt, kompakte und dennoch leistungsfähige Abfragen in der Programmiersprache ihrer Wahl zu erstellen.

Professional Entwickler können LINQ to XML verwenden, um ihre Produktivität erheblich zu steigern. Mit LINQ to XML können sie weniger Code schreiben, der aussagekräftiger, kompakter und leistungsstärker ist. Sie können Abfrageausdrücke aus mehreren Datendomänen gleichzeitig verwenden.

LINQ to XML ist eine XML-Programmierschnittstelle

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

LINQ to XML ist wie das Dokumentobjektmodell (DOM) darin, dass es das XML-Dokument in den Arbeitsspeicher bringt. 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 jedoch von DOM:

  • Es bietet ein neues Objektmodell, das leichter und einfacher zu arbeiten ist.
  • Es nutzt sprachfeatures in C# und Visual Basic.

Der wichtigste Vorteil von LINQ to XML ist die Integration mit 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 in Der Funktionalität (obwohl nicht in Syntax) mit XPath und XQuery vergleichbar. Die Integration von LINQ in C# und Visual Basic bietet eine stärkere Eingabe, Kompilierungszeitüberprüfung und verbesserte Debuggerunterstützung.

Ein weiterer Vorteil von LINQ to XML ist die Möglichkeit, Abfrageergebnisse als Parameter zu XElement verwenden und XAttribute Objektkonstruktoren ermöglicht einen leistungsstarken 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.

Sie können beispielsweise eine typische XML-Bestellung haben, wie in der Beispiel-XML-Datei beschrieben: Typische Bestellung. Mithilfe von LINQ to XML können Sie die folgende Abfrage ausführen, um den Attributwert der Teilnummer für jedes Element in der Bestellung abzurufen:

// Load the XML file from our project directory containing the purchase orders
var filename = "PurchaseOrder.xml";
var currentDirectory = Directory.GetCurrentDirectory();
var purchaseOrderFilepath = Path.Combine(currentDirectory, filename);

XElement purchaseOrder = XElement.Load(purchaseOrderFilepath);

IEnumerable<string> partNos =  from item in purchaseOrder.Descendants("Item")
                               select (string) item.Attribute("PartNumber");
' Load the XML file from our project directory containing the purchase orders
Dim filename = "PurchaseOrder.xml"
Dim currentDirectory = Directory.GetCurrentDirectory()
Dim purchaseOrderFilepath = Path.Combine(currentDirectory, filename)

Dim purchaseOrder As XElement = XElement.Load(purchaseOrderFilepath)

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

In C# kann dies in Methodensyntaxform neu geschrieben werden:

IEnumerable<string> partNos = purchaseOrder.Descendants("Item").Select(x => (string) x.Attribute("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:

// Load the XML file from our project directory containing the purchase orders
var filename = "PurchaseOrder.xml";
var currentDirectory = Directory.GetCurrentDirectory();
var purchaseOrderFilepath = Path.Combine(currentDirectory, filename);

XElement purchaseOrder = XElement.Load(purchaseOrderFilepath);

IEnumerable<XElement> pricesByPartNos =  from item in purchaseOrder.Descendants("Item")
                                 where (int) item.Element("Quantity") * (decimal) item.Element("USPrice") > 100
                                 orderby (string)item.Element("PartNumber")
                                 select item;
' Load the XML file from our project directory containing the purchase orders
Dim filename = "PurchaseOrder.xml"
Dim currentDirectory = Directory.GetCurrentDirectory()
Dim purchaseOrderFilepath = Path.Combine(currentDirectory, filename)

Dim purchaseOrder As XElement = XElement.Load(purchaseOrderFilepath)

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

In C# kann dies erneut in Methodensyntaxform geschrieben werden:

IEnumerable<XElement> pricesByPartNos = purchaseOrder.Descendants("Item")
                                        .Where(item => (int)item.Element("Quantity") * (decimal)item.Element("USPrice") > 100)
                                        .OrderBy(order => order.Element("PartNumber"));

Zusätzlich zu diesen LINQ-Funktionen bietet LINQ to XML eine verbesserte XML-Programmierschnittstelle. Mithilfe von LINQ to XML können Sie Folgendes ausführen:

  • Laden Sie XML aus Dateien oder Streams.
  • 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-Bäumen

Einer der wichtigsten Vorteile der Programmierung mit LINQ to XML besteht darin, dass es einfach ist, XML-Strukturen zu erstellen. Wenn Sie z.B. eine kleine XML-Struktur erstellen möchten, können Sie einen 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")
        )
    )
);
Dim contacts As XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone>206-555-0144</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Hinweis

Die Visual Basic Version des Beispiels verwendet XML-Literale. Sie können auch in Visual Basic wie in der C#-Version verwendenXElement.

Weitere Informationen finden Sie unter XML-Strukturen.

Weitere Informationen