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
Исходный код:
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объект, a double, a stringили an 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
Исходный код:
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

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

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

Объект, содержащий результат оценки выражения. Объект может быть boolобъектом, a, a doublestringили anIEnumerable<T>.

Примеры

В следующем примере создается дерево XML, содержащее пространство имен. Он используется XmlReader для чтения XML-документа. Затем он получает 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.

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