LINQ to XML für XPath-Benutzer
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 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 |
---|---|
Bietet eine Übersicht über die Gemeinsamkeiten und Unterschiede von XPath und LINQ to XML. |
|
Vorgehensweise: Ermitteln eines untergeordneten Elements (XPath-LINQ to XML) |
Vergleicht die XPath-Achse für untergeordnete Elemente mit der LINQ to XML Element-Methode. Der zugehörige XPath-Ausdruck ist "DeliveryNotes". |
Vorgehensweise: Ermitteln einer Liste untergeordneter Elemente (XPath-LINQ to XML) |
Vergleicht die XPath-Achse für untergeordnete Elemente mit der LINQ to XML Elements-Achse. Der zugehörige XPath-Ausdruck ist "./*". |
Vorgehensweise: Ermitteln des Stammelements (XPath-LINQ to XML) |
Vergleicht, wie Sie mit XPath und mit LINQ to XML das Stammelement abrufen können. Der zugehörige XPath-Ausdruck ist "/PurchaseOrders". |
Vorgehensweise: Ermitteln von Nachfolgerelementen (XPath-LINQ to XML) |
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) |
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: Ermitteln verwandter Elemente (XPath-LINQ to XML) |
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: Ermitteln von Elementen in einem Namespace (XPath-LINQ to XML) |
Vergleicht die Verwendung der XPath-XmlNamespaceManager-Klasse mit der LINQ to XML Namespace-Eigenschaft der XName-Klasse beim Arbeiten mit XML-Namespaces. Der zugehörige XPath-Ausdruck ist "./aw:*". |
Vorgehensweise: Ermitteln von vorhergehenden nebengeordneten Elementen (XPath-LINQ to XML) |
Vergleicht die XPath-preceding-sibling-Achse mit der LINQ to XML untergeordneten XNode.ElementsBeforeSelf-Achse. Der zugehörige XPath-Ausdruck ist "preceding-sibling::*". |
Vorgehensweise: Ermitteln von Nachfolgern untergeordneter Elemente (XPath-LINQ to XML) |
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: Ermitteln einer Union zweier Speicherortpfade (XPath-LINQ to XML) |
Vergleicht die Verwendung des Union-Operators |in XPath mit dem Concat``1-Standardabfrageoperator in LINQ to XML. Der zugehörige XPath-Ausdruck ist "//Category|//Price". |
Vorgehensweise: Ermitteln von nebengeordneten Knoten (XPath-LINQ to XML) |
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: Ermitteln des Attributs des übergeordneten Elements (XPath-LINQ to XML) |
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". |
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: Ermitteln von Elementen mit einem bestimmten Attribut (XPath-LINQ to XML) |
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: Ermitteln untergeordneter Elemente anhand der Position (XPath-LINQ to XML) |
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: Ermitteln des unmittelbar vorhergehenden nebengeordneten Knotens (XPath-LINQ to XML) |
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]". |