Выборка 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.
См. также
- XmlDocument
- XPathDocument
- XPathNavigator
- Обработка XML-данных с использованием модели данных XPath
- Вычисление выражения XPath с помощью класса XPathNavigator
- Соответствие узлов с помощью XPathNavigator
- Типы узлов, распознаваемые запросами XPath
- Запросы XPath и пространства имен
- Скомпилированные выражения XPath