LINQ to XML für XPath-Benutzer (C#)

Die Themen in diesem Abschnitt demonstrieren eine Reihe von XPath-Ausdrücken und deren LINQ to XML-Entsprechungen.

Alle Beispiele nutzen die XPath-Funktionalität in LINQ to XML, die durch die Erweiterungsmethoden in System.Xml.XPath.Extensions verfügbar gemacht werden. Die Beispiele führen sowohl den XPath-Ausdruck als auch den LINQ to XML-Ausdruck aus. Anschließend vergleichen sie die Ergebnisse der beiden Abfragen und prüfen dadurch, ob der XPath-Ausdruck funktional mit der LINQ to XML-Abfrage identisch ist. Da beide Abfragearten Knoten aus derselben XML-Struktur zurückgeben, erfolgt der Vergleich der Abfrageergebnisse mittels referenzieller Identität.

In diesem Abschnitt

Thema Beschreibung
Vergleich zwischen XPath und LINQ to XML Bietet eine Übersicht über die Gemeinsamkeiten und Unterschiede von XPath und LINQ to XML.
Vorgehensweise: Suchen eines untergeordneten Elements (XPath-LINQ to XML) (C#) Vergleicht die XPath-Achse für untergeordnete Elemente mit der LINQ to XML Element-Methode.

Der zugehörige XPath-Ausdruck ist "DeliveryNotes".
Vorgehensweise: Suchen einer Liste untergeordneter Elemente (XPath-LINQ to XML) (C#) Vergleicht die XPath-Achse für untergeordnete Elemente mit der LINQ to XML Elements-Achse.

Der zugehörige XPath-Ausdruck ist "./*".
Vorgehensweise: Suchen des Stammelements (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML das Stammelement abrufen können.

Der zugehörige XPath-Ausdruck ist "/PurchaseOrders".
Vorgehensweise: Suchen von Nachfolgerelementen (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML die Nachfolgerelemente mit einem bestimmten Namen abrufen können.

Der zugehörige XPath-Ausdruck ist "//Name".
Vorgehensweise: Filtern nach einem Attribut (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML die Nachfolgerelemente mit einem bestimmten Namen und mit einem Attribut mit einem bestimmten Wert abrufen können.

Der zugehörige XPath-Ausdruck ist ".//Address[@Type='Shipping']".
Vorgehensweise: Suchen nach verwandten Elementen (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML ein Element abrufen können, indem nach einem Attribut ausgewählt wird, auf das der Wert eines anderen Elements verweist.

Der zugehörige XPath-Ausdruck ist ".//Customer[@CustomerID=/Root/Orders/Order[12]/CustomerID]".
Vorgehensweise: Suchen nach Elementen in einem Namespace (XPath-LINQ to XML) (C#) Vergleicht die Verwendung der XPath-XmlNamespaceManager-Klasse mit der LINQ to XMLNamespace-Eigenschaft der XName-Klasse beim Arbeiten mit XML-Namespaces.

Der zugehörige XPath-Ausdruck ist "./aw:*".
Vorgehensweise: Suchen nach Nachfolgern von untergeordneten Elementen (XPath-LINQ to XML) (C#) Vergleicht die XPath-preceding-sibling-Achse mit der LINQ to XML untergeordneten XNode.ElementsBeforeSelf-Achse.

Der zugehörige XPath-Ausdruck ist "preceding-sibling::*".
Vorgehensweise: Suchen nach Nachfolgern von untergeordneten Elementen (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML die Nachfolgerelemente eines untergeordneten Elements mit einem bestimmten Namen abrufen können.

Der zugehörige XPath-Ausdruck ist "./Paragraph//Text/text()".
Vorgehensweise: Suchen nach einer Union von zwei Speicherorten (XPath-LINQ to XML) (C#) Vergleicht die Verwendung des Union|-Operators Concat in XPath mit dem LINQ to XML-Standardabfrageoperator in .

Der zugehörige XPath-Ausdruck ist "//Category|//Price".
Vorgehensweise: Suchen nach nebengeordneten Knoten (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML nach allen nebengeordneten Knoten eines Knotens suchen können, die einen bestimmten Namen haben.

Der zugehörige XPath-Ausdruck ist "../Book".
Vorgehensweise: Suchen eines Attributs eines übergeordneten Elements (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML zum übergeordneten Element navigieren und nach einem zugeordneten Attribut suchen können.

Der zugehörige XPath-Ausdruck ist "../@id".
Vorgehensweise: Suchen nach Attributen von nebengeordneten Elementen mit einem bestimmten Namen (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML nach bestimmten Attributen der nebengeordneten Knoten des Kontextknotens suchen können.

Der zugehörige XPath-Ausdruck ist "``../Book/@id``".
Vorgehensweise: Suchen nach Elementen mit bestimmten Attributen (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML nach allen Elementen suchen können, die ein bestimmtes Attribut enthalten.

Der zugehörige XPath-Ausdruck ist "./*[@Select]".
Vorgehensweise: Suchen nach untergeordneten Elementen anhand der Position (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML nach einem Element anhand seiner relativen Position suchen können.

Der zugehörige XPath-Ausdruck ist "Test[position() >= 2 and position() <= 4]".
Vorgehensweise: Suchen nach dem unmittelbar vorhergehenden nebengeordneten Knoten (XPath-LINQ to XML) (C#) Vergleicht, wie Sie mit XPath und mit LINQ to XML nach dem unmittelbar vorgehenden nebengeordneten Knoten eines Knotens suchen können.

Der zugehörige XPath-Ausdruck ist "preceding-sibling::*[1]".

Siehe auch

System.Xml.XPath
Abfragen von XML-Strukturen (C#)
Verarbeiten von XML-Daten mithilfe des XPath-Datenmodells