Поделиться через


Extensions.XPathEvaluate Метод

Определение

Вычисляет выражение XPath.

Перегрузки

XPathEvaluate(XNode, String)

Вычисляет выражение XPath.

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Вычисляет выражение XPath, разрешая префиксы пространств имен с помощью указанного IXmlNamespaceResolver.

Комментарии

Хотя порядок возвращаемых коллекций не указан в рекомендации xml XPath Language 1.0, этот метод расширения возвращает узлы в порядке документа.

Обратите внимание, что узлы возвращаются в порядке документа даже при использовании обратной оси, например preceding-sibling или ancestor-or-self.

XPathEvaluate(XNode, String)

Исходный код:
XNodeNavigator.cs
Исходный код:
XNodeNavigator.cs
Исходный код:
XNodeNavigator.cs

Вычисляет выражение XPath.

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

Параметры

node
XNode

XNode, в котором вычисляется выражение XPath.

expression
String

String, содержащая выражение XPath.

Возвращаемое значение

Объект, который может содержать bool, double, string или IEnumerable<T>.

Примеры

В следующем примере создается небольшое XML-дерево с атрибутом , а затем используется XPathEvaluate метод для получения атрибута.

                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())  

В этом примере выводятся следующие данные:

a="value"  

Комментарии

Если коллекция является перечислением элементов или атрибутов, можно использовать Cast оператор , чтобы получить коллекцию XElement или XAttribute.

Хотя порядок возвращаемых коллекций не указан в рекомендации xml XPath Language 1.0, этот метод расширения возвращает узлы в порядке документа.

Обратите внимание, что узлы возвращаются в порядке документа даже при использовании обратной оси, например preceding-sibling или ancestor-or-self.

Применяется к

XPathEvaluate(XNode, String, IXmlNamespaceResolver)

Исходный код:
XNodeNavigator.cs
Исходный код:
XNodeNavigator.cs
Исходный код:
XNodeNavigator.cs

Вычисляет выражение XPath, разрешая префиксы пространств имен с помощью указанного 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

Параметры

node
XNode

XNode, в котором вычисляется выражение XPath.

expression
String

String, содержащая выражение XPath.

resolver
IXmlNamespaceResolver

IXmlNamespaceResolver для префиксов пространств имен в выражении XPath.

Возвращаемое значение

Объект, содержащий результат вычисления выражения. Объект может иметь тип bool, double, string или IEnumerable<T>.

Примеры

В следующем примере создается XML-дерево, содержащее пространство имен . Для считывания XML-документа используется XmlReader. Затем в примере происходит получение XmlNameTable из XmlReader и XmlNamespaceManager из XmlNameTable. При выборе XmlNamespaceManager элемента используется .

                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)  

В этом примере выводятся следующие данные:

aw:Att="attdata"  

Комментарии

Этот метод можно использовать для вычисления выражений XPath, содержащих префиксы пространства имен.

Хотя порядок возвращаемых коллекций не указан в рекомендации xml XPath Language 1.0, этот метод расширения возвращает узлы в порядке документа.

Обратите внимание, что узлы возвращаются в порядке документа даже при использовании обратной оси, например preceding-sibling или ancestor-or-self.

Применяется к