Freigeben ü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.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Object ^ XPathEvaluate(System::Xml::Linq::XNode ^ node, System::String ^ expression);
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression);
static member XPathEvaluate : System.Xml.Linq.XNode * string -> obj
<Extension()>
Public Function XPathEvaluate (node As XNode, expression As String) As Object

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.

                String xml = "<root a='value'/>";  
XDocument d = XDocument.Parse(xml);  
IEnumerable att = (IEnumerable)d.XPathEvaluate("/root/@a");  
Console.WriteLine(att.Cast<XAttribute>().FirstOrDefault());  
                Dim d As XDocument = _  
    <?xml version='1.0'?>  
    <root a='value'/>  
Dim att As IEnumerable = CType(d.XPathEvaluate("/root/@a"), IEnumerable)  
Console.WriteLine(att.Cast(Of 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

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

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

public:
[System::Runtime::CompilerServices::Extension]
 static System::Object ^ XPathEvaluate(System::Xml::Linq::XNode ^ node, System::String ^ expression, System::Xml::IXmlNamespaceResolver ^ resolver);
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver? resolver);
public static object XPathEvaluate (this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver resolver);
static member XPathEvaluate : System.Xml.Linq.XNode * string * System.Xml.IXmlNamespaceResolver -> obj
<Extension()>
Public Function XPathEvaluate (node As XNode, expression As String, resolver As IXmlNamespaceResolver) As Object

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.

                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);  
                Dim markup As XElement = _  
    <aw:Root xmlns:aw='http://www.adventure-works.com'>  
        <aw:Child1 aw:Att='attdata'>child one data 1</aw:Child1>  
    </aw:Root>  
Dim reader As XmlReader = markup.CreateReader  
Dim nameTable As XmlNameTable = reader.NameTable  
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(nameTable)  
namespaceManager.AddNamespace("aw", "http://www.adventure-works.com")  
Dim atts As IEnumerable = CType(markup.XPathEvaluate("./aw:Child1/@aw:Att", namespaceManager), IEnumerable)  
Dim attList As IEnumerable(Of XAttribute) = atts.Cast(Of XAttribute)()  
Dim att As XAttribute = 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