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


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

Класс 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.

<?xml version="1.0" encoding="utf-8" ?> 
<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.

См. также