Freigeben über


Übersicht über LINQ to XML

LINQ to XML stellt eine IN-Memory-XML-Programmierschnittstelle bereit, die das .NET Language-Integrated Query (LINQ) Framework nutzt. LINQ to XML verwendet .NET-Funktionen und ist vergleichbar mit einer aktualisierten, überarbeiteten XML-Programmierschnittstelle (Document Object Model, DOM).

XML wurde als Eine Möglichkeit zum Formatieren von Daten in vielen Kontexten weit verbreitet. Beispielsweise finden Sie XML im Web, 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. Es bietet die In-Memory-Dokumentänderungsfunktionen des Dokumentobjektmodells (Document Object Model, DOM) und unterstützt LINQ-Abfrageausdrücke. Obwohl sich diese Abfrageausdrücke syntaktisch von XPath unterscheiden, stellen sie ähnliche Funktionen bereit.

LINQ to XML-Entwickler*innen

LINQ to XML zielt auf eine Vielzahl von Entwicklern ab. Für einen durchschnittlichen Entwickler, der nur etwas erledigen möchte, erleichtert LINQ to XML XML, indem eine Abfrageumgebung bereitgestellt wird, die sql ähnelt. Mit nur wenigen Studien können Programmierer lernen, prägnant und leistungsstarke Abfragen in ihrer Programmiersprache ihrer Wahl zu schreiben.

Professionelle 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 ausdrucksstärker, 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, speicherinterne XML-Programmierschnittstelle, mit der Sie mit XML in den .NET-Programmiersprachen arbeiten können.

LINQ to XML ist wie das Dom (Document Object Model), da es das XML-Dokument in den Arbeitsspeicher bringt. Sie können das Dokument abfragen und ändern, und nachdem Sie es geändert haben, können Sie es in einer Datei speichern oder serialisieren und über das Internet senden. LINQ to XML unterscheidet sich jedoch von DOM:

  • Es bietet ein neues Objektmodell, das leichter und einfacher zu handhaben ist.
  • Sie nutzt Merkmale der Sprache in C# und Visual Basic aus.

Der wichtigste Vorteil von LINQ to XML ist die Integration in Language-Integrated Query (LINQ). Mit dieser Integration können Sie Abfragen im XML-Dokument im Arbeitsspeicher schreiben, um Sammlungen 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 für XElement und XAttribute-Objektkonstruktoren zu verwenden, was einen leistungsfähigen Ansatz zum Erstellen von XML-Strukturen ermöglicht. Dieser Ansatz, der als funktionale Konstruktion bezeichnet wird, ermöglicht Entwicklern die einfache Transformation von XML-Strukturen von einer Form in eine andere.

Sie können z. B. eine typische XML-Bestellung wie in der XML-Beispieldatei beschrieben haben: Typische Bestellung. Mithilfe von LINQ to XML können Sie die folgende Abfrage ausführen, um den Attributwert der Teilenummer 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 umgeschrieben werden:

IEnumerable<string> partNos = purchaseOrder.Descendants("Item").Select(x => (string) x.Attribute("PartNumber"));

Als weiteres Beispiel könnten Sie eine Liste wünschen, die nach der Teilenummer sortiert ist, mit Elementen, deren Wert größer als 100 US-Dollar ist. Um diese Informationen zu erhalten, können 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. Mit LINQ to XML können Sie:

  • Laden von XML aus Dateien oder Datenströmen.
  • Serialisieren Sie XML in Dateien oder Datenströme.
  • Erstellen Sie XML von Grund auf neu, indem Sie die funktionale Konstruktion verwenden.
  • Abfrage-XML mit XPath-ähnlichen Achsen.
  • Bearbeiten Sie die XML-Struktur im Arbeitsspeicher mithilfe von Methoden wie Add, , Remove, ReplaceWithund SetValue.
  • Überprüfen Sie XML-Strukturen mithilfe von XSD.
  • Verwenden Sie eine Kombination dieser Features, um XML-Strukturen von einem Shape in eine andere zu 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. Um beispielsweise eine kleine XML-Struktur zu erstellen, können Sie Code wie folgt 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 verwenden XElement .

Weitere Informationen finden Sie unter XML-Strukturen.

Siehe auch