Auf Englisch lesen

Teilen über


Extensions.XPathEvaluate Methode

Definition

Wertet einen XPath-Ausdruck aus.

Überlädt

XPathEvaluate(XNode, String)

Wertet einen XPath-Ausdruck aus.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Wertet einen XPath-Ausdruck aus und löst Namespacepräfixe mit dem angegebenen IXmlNamespaceResolver auf.

Hinweise

Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.

Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling . B. oder ancestor-or-self.

XPathEvaluate(XNode, String)

Wertet einen XPath-Ausdruck aus.

C#
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression);

Parameter

node
XNode

Der XNode, in dem der XPath-Ausdruck ausgewertet wird.

expression
String

Ein String, der einen XPath-Ausdruck enthält.

Gibt zurück

Object

Ein Objekt, das einen bool, einen double, einen string oder einen IEnumerable<T> enthalten kann.

Beispiele

Im folgenden Beispiel wird eine kleine XML-Struktur mit einem Attribut erstellt und dann die XPathEvaluate Methode zum Abrufen des Attributs verwendet.

C#
                String xml = "<root a='value'/>";  
XDocument d = XDocument.Parse(xml);  
IEnumerable att = (IEnumerable)d.XPathEvaluate("/root/@a");  
Console.WriteLine(att.Cast<XAttribute>().FirstOrDefault());  

Dieses Beispiel erzeugt die folgende Ausgabe:

a="value"  

Hinweise

Wenn die Auflistung eine Aufzählung von Elementen oder Attributen ist, können Sie den Cast Operator verwenden, um eine Auflistung oder eine Auflistung abzurufen XElement XAttribute.

Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.

Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling . B. oder ancestor-or-self.

Gilt für

.NET 7 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Wertet einen XPath-Ausdruck aus und löst Namespacepräfixe mit dem angegebenen IXmlNamespaceResolver auf.

C#
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver? resolver);
C#
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver resolver);

Parameter

node
XNode

Der XNode, in dem der XPath-Ausdruck ausgewertet wird.

expression
String

Ein String, der einen XPath-Ausdruck enthält.

resolver
IXmlNamespaceResolver

Ein IXmlNamespaceResolver für die Namespacepräfixe im XPath-Ausdruck.

Gibt zurück

Object

Ein Objekt, das das Ergebnis aus der Auswertung des Ausdrucks enthält. Das Objekt kann ein bool, ein double, ein string oder ein IEnumerable<T> sein.

Beispiele

Im folgenden Beispiel wird eine XML-Struktur erstellt, die einen Namespace enthält. Zum Lesen des XML-Dokuments kommt dabei ein XmlReader zum Einsatz. Anschließend werden eine XmlNameTable aus dem XmlReader und ein XmlNamespaceManager aus der XmlNameTable abgerufen. Es verwendet die XmlNamespaceManager Auswahl eines Elements.

C#
                string markup =  
@"<aw:Root xmlns:aw='http://www.adventure-works.com'>  
    <aw:Child1 aw:Att='attdata'>child one data 1</aw:Child1>  
</aw:Root>";  
XmlReader reader = XmlReader.Create(new StringReader(markup));  
XElement root = XElement.Load(reader);  
XmlNameTable nameTable = reader.NameTable;  
XmlNamespaceManager namespaceManager = new XmlNamespaceManager(nameTable);  
namespaceManager.AddNamespace("aw", "http://www.adventure-works.com");  
IEnumerable atts = (IEnumerable)root.XPathEvaluate("./aw:Child1/@aw:Att", namespaceManager);  
IEnumerable<XAttribute> attList = atts.Cast<XAttribute>();  
XAttribute att = attList.First();  
Console.WriteLine(att);  

Dieses Beispiel erzeugt die folgende Ausgabe:

aw:Att="attdata"  

Hinweise

Sie können diese Methode verwenden, um XPath-Ausdrücke zu bewerten, die Namespacepräfixe enthalten.

Obwohl die Reihenfolge der zurückgegebenen Auflistungen nicht in der XML XPath Language 1.0-Empfehlung angegeben ist, gibt diese Erweiterungsmethode Knoten in der Dokumentreihenfolge zurück.

Beachten Sie, dass Knoten in der Dokumentreihenfolge zurückgegeben werden, auch wenn Sie eine Umgekehrtachse verwenden, z preceding-sibling . B. oder ancestor-or-self.

Gilt für

.NET 7 und andere Versionen
Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7
.NET Framework 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8
.NET Standard 2.0, 2.1