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


Выборка XML-данных с помощью XPathNavigator

Обновлен: November 2007

Класс XPathNavigator содержит набор методов, используемых для выборки набора узлов в объекте XPathDocument или XmlDocument с помощью выражения XPath. По набору выбранных узлов можно передвигаться в цикле итерации.

Методы выбора в классе XPathNavigator

Класс XPathNavigator содержит набор методов, используемых для выборки набора узлов в объекте XPathDocument или XmlDocument с помощью выражения XPath. Класс XPathNavigator содержит также набор оптимизированных методов для выборки узлов-предков, дочерних узлов и узлов-потомков быстрее, чем это можно сделать с помощью выражения XPath. Набор выбранных узлов возвращается в объекте XPathNodeIterator или, если набор состоит из одного узла, в объекте XPathNavigator.

Выбор узлов с помощью выражений XPath

Для выбора узлов с помощью выражений XPath используется один из перечисленных ниже методов выборки.

Эти методы возвращают набор узлов, по которому можно свободно перемещаться с помощью объекта XPathNodeIterator, или, если выбран один узел, в объекте XPathNavigator.

Перемещение с помощью объекта XPathNodeIterator не влияет на позицию объекта XPathNavigator, использованного для его создания. Объект XPathNavigator, возвращаемый методами SelectSingleNode, располагается в единственном возвращаемом узле и также не влияет на положение объекта XPathNavigator, с помощью которого создавался.

В следующем примере показано создание объекта XPathNavigator из объекта XPathDocument, использование метода Select для выбора узлов в объекте XPathDocument и использование объекта XPathNodeIterator для итеративного прохода по выбранным узлам.

Dim document As XPathDocument = New XPathDocument("books.xml")
Dim navigator As XPathNavigator = document.CreateNavigator()
Dim nodes As XPathNodeIterator = navigator.Select("/bookstore/book")

While nodes.MoveNext()
    Console.WriteLine(nodes.Current.Name)
End While
XPathDocument document = new XPathDocument("books.xml");
XPathNavigator navigator = document.CreateNavigator();
XPathNodeIterator nodes = navigator.Select("/bookstore/book");

while(nodes.MoveNext())
{
    Console.WriteLine(nodes.Current.Name);
}

В примере в качестве входных данных используется файл books.xml.

<bookstore>
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>
            <first-name>Benjamin</first-name>
            <last-name>Franklin</last-name>
        </author>
        <price>8.99</price>
    </book>
    <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
        <title>The Confidence Man</title>
        <author>
            <first-name>Herman</first-name>
            <last-name>Melville</last-name>
        </author>
        <price>11.99</price>
    </book>
    <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
        <title>The Gorgias</title>
        <author>
            <name>Plato</name>
        </author>
        <price>9.99</price>
    </book>
</bookstore>

Оптимизированные методы выбора

Методы SelectChildren, SelectAncestors и SelectDescendants класса XPathNavigator представляют выражения XPath, часто применяемые для получения дочерних узлов, узлов-потомков и узлов-предков. Эти методы оптимизированы по производительности и работают быстрее, чем соответствующие им выражения XPath. Методы SelectChildren, SelectAncestors и SelectDescendants выбирают узлы-потомки, дочерние узлы и узлы-предки на основании значения XPathNodeType или локального имени и URI-кода пространства имен узлов, которые нужно выбрать. Выбранные узлы-потомки, дочерние узлы и узлы-предки возвращаются в объекте XPathNodeIterator.

См. также

Основные понятия

Обработка XML-данных с использованием модели данных XPath

Вычисление выражения XPath с помощью класса XPathNavigator

Соответствие узлов с помощью XPathNavigator

Типы узлов, распознаваемые запросами XPath

Запросы XPath и пространства имен

Скомпилированные выражения XPath

Ссылки

XmlDocument

XPathDocument

XPathNavigator