Extensions.XPathEvaluate Methode

Definition

Wertet einen XPath-Ausdruck aus.

Überlädt

Name Beschreibung
XPathEvaluate(XNode, String)

Wertet einen XPath-Ausdruck aus.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Wertet einen XPath-Ausdruck aus, wobei Namespacepräfixe mithilfe des angegebenen Präfixes aufgelöst werden IXmlNamespaceResolver.

Hinweise

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

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

XPathEvaluate(XNode, String)

Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs

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 XPath-Ausdruck, für den der XPath-Ausdruck ausgewertet werden soll.

expression
String

A String that contains an XPath expression.

Gibt zurück

Ein Objekt, das ein bool, a double, a stringoder ein IEnumerable<T>.

Beispiele

Im folgenden Beispiel wird eine kleine XML-Struktur mit einem Attribut erstellt. Anschließend wird 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 es sich bei der Auflistung um eine Aufzählung von Elementen oder Attributen handelt, können Sie den Cast Operator verwenden, um eine Auflistung von XElement oder .XAttribute

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

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

Gilt für:

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs
Quelle:
XNodeNavigator.cs

Wertet einen XPath-Ausdruck aus, wobei Namespacepräfixe mithilfe des angegebenen Präfixes aufgelöst werden IXmlNamespaceResolver.

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 XPath-Ausdruck, für den der XPath-Ausdruck ausgewertet werden soll.

expression
String

A String that contains an XPath expression.

resolver
IXmlNamespaceResolver

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

Gibt zurück

Ein Objekt, das das Ergebnis der Auswertung des Ausdrucks enthält. Das Objekt kann ein bool, a double, a stringoder ein IEnumerable<T>.

Beispiele

Im folgenden Beispiel wird eine XML-Struktur erstellt, die einen Namespace enthält. Zum Lesen des XML-Dokuments wird ein XmlReader Xml-Dokument verwendet. Es wird XmlNameTable dann von der XmlReader, und eine XmlNamespaceManager von der XmlNameTable. Beim Auswählen eines Elements wird das XmlNamespaceManager Element verwendet.

                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

Mit dieser Methode können Sie XPath-Ausdrücke auswerten, die Namespacepräfixe enthalten.

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

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

Gilt für: