Extensions.XPathSelectElements Метод

Определение

Выбирает коллекцию элементов с помощью выражения XPath.

Перегрузки

Имя Описание
XPathSelectElements(XNode, String)

Выбирает коллекцию элементов с помощью выражения XPath.

XPathSelectElements(XNode, String, IXmlNamespaceResolver)

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

Комментарии

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

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

XPathSelectElements(XNode, String)

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

Выбирает коллекцию элементов с помощью выражения XPath.

public:
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ XPathSelectElements(System::Xml::Linq::XNode ^ node, System::String ^ expression);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> XPathSelectElements(this System.Xml.Linq.XNode node, string expression);
static member XPathSelectElements : System.Xml.Linq.XNode * string -> seq<System.Xml.Linq.XElement>
<Extension()>
Public Function XPathSelectElements (node As XNode, expression As String) As IEnumerable(Of XElement)

Параметры

node
XNode

Значение XNode для вычисления выражения XPath.

expression
String

Объект, String содержащий выражение XPath.

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

IEnumerable<T> ОбъектXElement, содержащий выбранные элементы.

Примеры

В следующем примере создается небольшое xml-дерево и используется XPathSelectElements для выбора набора элементов.

                XElement root = new XElement("Root",
    new XElement("Child1", 1),
    new XElement("Child1", 2),
    new XElement("Child1", 3),
    new XElement("Child2", 4),
    new XElement("Child2", 5),
    new XElement("Child2", 6)
);
IEnumerable<XElement> list = root.XPathSelectElements("./Child2");
foreach (XElement el in list)
    Console.WriteLine(el);
                Dim root As XElement = _
    <Root>
        <Child1>1</Child1>
        <Child1>2</Child1>
        <Child1>3</Child1>
        <Child2>4</Child2>
        <Child2>5</Child2>
        <Child2>6</Child2>
    </Root>
Dim list As IEnumerable(Of XElement) = root.XPathSelectElements("./Child2")
For Each el As XElement In list
    Console.WriteLine(el)
Next

В примере получается следующий вывод.

<Child2>4</Child2>
<Child2>5</Child2>
<Child2>6</Child2>

Комментарии

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

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

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

XPathSelectElements(XNode, String, IXmlNamespaceResolver)

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

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

public:
[System::Runtime::CompilerServices::Extension]
 static System::Collections::Generic::IEnumerable<System::Xml::Linq::XElement ^> ^ XPathSelectElements(System::Xml::Linq::XNode ^ node, System::String ^ expression, System::Xml::IXmlNamespaceResolver ^ resolver);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> XPathSelectElements(this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver? resolver);
public static System.Collections.Generic.IEnumerable<System.Xml.Linq.XElement> XPathSelectElements(this System.Xml.Linq.XNode node, string expression, System.Xml.IXmlNamespaceResolver resolver);
static member XPathSelectElements : System.Xml.Linq.XNode * string * System.Xml.IXmlNamespaceResolver -> seq<System.Xml.Linq.XElement>
<Extension()>
Public Function XPathSelectElements (node As XNode, expression As String, resolver As IXmlNamespaceResolver) As IEnumerable(Of XElement)

Параметры

node
XNode

Значение XNode для вычисления выражения XPath.

expression
String

Объект, String содержащий выражение XPath.

resolver
IXmlNamespaceResolver

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

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

IEnumerable<T> ОбъектXElement, содержащий выбранные элементы.

Примеры

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

                string markup = @"
<aw:Root xmlns:aw='http://www.adventure-works.com'>
    <aw:Child1>child one data 1</aw:Child1>
    <aw:Child1>child one data 2</aw:Child1>
    <aw:Child1>child one data 3</aw:Child1>
    <aw:Child2>child two data 4</aw:Child2>
    <aw:Child2>child two data 5</aw:Child2>
    <aw:Child2>child two data 6</aw:Child2>
</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<XElement> elements = root.XPathSelectElements("./aw:Child1", namespaceManager);
foreach (XElement el in elements)
    Console.WriteLine(el);
                Dim markup As XElement = _
<aw:Root xmlns:aw="http://www.adventure-works.com">
    <aw:Child1>child one data 1</aw:Child1>
    <aw:Child1>child one data 2</aw:Child1>
    <aw:Child1>child one data 3</aw:Child1>
    <aw:Child2>child two data 4</aw:Child2>
    <aw:Child2>child two data 5</aw:Child2>
    <aw:Child2>child two data 6</aw:Child2>
</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 elements As IEnumerable(Of XElement) = markup.XPathSelectElements("./aw:Child1", namespaceManager)
For Each el As XElement In elements
    Console.WriteLine(el)
Next

В примере получается следующий вывод.

<aw:Child1 xmlns:aw="http://www.adventure-works.com">child one data 1</aw:Child1>
<aw:Child1 xmlns:aw="http://www.adventure-works.com">child one data 2</aw:Child1>
<aw:Child1 xmlns:aw="http://www.adventure-works.com">child one data 3</aw:Child1>

Комментарии

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

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

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

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