Навигация по XML с помощью класса XPathNavigator с помощью Visual Basic

В этой статье описаны некоторые примеры шагов и пример кода для навигации по XML с помощью XPathNavigator класса в Visual Basic 2005 или Visual Basic .NET.

Исходная версия продукта: Visual Basic 2005, Visual Basic .NET
Исходный номер базы знаний: 301111

Сводка

В этой пошаговой статье показано, как перемещаться по документам XML с XPathNavigator помощью объекта, созданного XPathDocument из объекта . Этот пример загружает XPathDocument объект с XML-данными, создает XPathNavigator объект в виде представления данных и отображает XML-код путем обхода документа.

Версию этой статьи для Microsoft Visual C# см. в статье Использование Visual C# для навигации по XML-документам с помощью класса XPathNavigator.

Требования

В следующем списке описаны рекомендуемые оборудование, программное обеспечение, сетевая инфраструктура и пакеты обновления.

  • Windows Server 2003, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server или Windows NT 4.0 Server
  • Visual Studio 2005 или Visual Studio .NET

В этой статье предполагается, что вы знакомы со следующими разделами:

  • Терминология XML
  • Создание и чтение XML-файлов
  • Синтаксис языка XML-пути (XPath)

Использование класса XPathNavigator для навигации по XML

  1. В Visual Studio 2005 или Visual Studio. NET, создайте консольное приложение Visual Basic 2005 или Visual Basic .NET.

    Примечание.

    В этом примере используется файл с именем Books.xml. Вы можете создать собственный файлBooks.xml или использовать пример, включенный в краткие руководства по пакету SDK для .NET. Если у вас установлены краткие руководства, Books.xml находится в папке : \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    Кроме того, этот файл можно получить, перейдя в раздел Пример XML-файла (books.xml).

    Необходимо скопировать Books.xml в папку \Bin\Debug , расположенную под папкой, в которой был создан этот проект.

  2. Убедитесь, что проект ссылается на System.Xml пространство имен.

  3. Используйте инструкцию Imports в Xml пространствах имен и XPath , чтобы не требовалось определять объявления в этих пространствах имен позже в коде. Оператор необходимо использовать Imports перед любыми другими объявлениями.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Объявите соответствующие переменные. Объявите XPathDocument объект для хранения XML-документа и объект для оценки выражений XPathNavigator XPath и перемещения по документу. Объявите объект String для хранения выражения XPath. Добавьте код объявления в процедуру Main в модуле Module1.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. XPathDocument Загрузите объект с примером файла Books.xml. Класс XPathDocument использует расширяемые преобразования языка таблиц стилей (XSLT), чтобы обеспечить быстрый и ориентированный на производительность кэш для обработки XML-документов. Она похожа на объектную модель xml-документов (DOM), но хорошо оптимизирована для обработки XSLT и модели данных XPath.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Создайте XPathNavigator объект из документа. XPathNavigator позволяет перемещаться по узлам атрибутов и узлам пространства имен в XML-документе.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. Перейдите в корень документа с помощью MoveToRoot метода . MoveToRoot задает для навигатора узел документа, содержащий все дерево узлов.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. Используйте метод для MoveToFirstChild перемещения в дочерние элементы XML-документа. Метод MoveToFirstChild перемещается к первому дочернему элементу текущего узла. В случае Books.xml с источником вы переходите от корневого документа к дочерним элементам, разделу Comment и узлу Bookstore.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Используйте метод для MoveToNext итерации узлов на уровне одноуровневого уровня. Метод MoveToNext перемещается в следующий одноуровневый элемент текущего узла.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. NodeType Используйте свойство , чтобы убедиться, что обрабатываются только узлы элементов, а свойство — Value для отображения текстового представления элемента.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'If children exist.
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  11. Используйте свойство , HasAttributes чтобы определить, имеет ли узел какие-либо атрибуты. Вы также можете использовать другие методы, например MoveToNextAttribute, для перемещения к атрибуту и проверки его значения.

    Примечание.

    Этот сегмент кода проходит только по потомкам корневого узла, а не по всему дереву.

    Do
    'Find the first element.
    If nav.NodeType = XPathNodeType.Element Then
    'if children exist
    If nav.HasChildren Then
    
    'Move to the first child.
    nav.MoveToFirstChild()'Loop through all the children.
    Do
    'Display the data.
    Console.Write("The XML string for this child ")
    Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
    If nav.HasAttributes Then
    Console.WriteLine("This node has attributes")
    End If
    Loop While nav.MoveToNext
    
    End If
    End If
    Loop While nav.MoveToNext
    
  12. ReadLine Используйте метод объекта , Console чтобы добавить паузу в конце экрана консоли, чтобы быстрее отобразить приведенные выше результаты.

    'Pause.
    Console.ReadLine()
    
  13. Создайте и запустите проект консольного приложения.

Полный список кода

Imports System.Xml
Imports System.Xml.XPath

Module Module1

Sub Main()
Dim nav As XPathNavigator
Dim docNav As XPathDocument
docNav = New XPathDocument("books.xml")
nav = docNav.CreateNavigator
nav.MoveToRoot()'Move to the first child node (comment field).
nav.MoveToFirstChild()

Do
'Find the first element.
If nav.NodeType = XPathNodeType.Element Then
'if children exist
If nav.HasChildren Then

'Move to the first child.
nav.MoveToFirstChild()'Loop through all the children.
Do
'Display the data.
Console.Write("The XML string for this child ")
Console.WriteLine("is '{0}'", nav.Value)'Check for attributes.
If nav.HasAttributes Then
Console.WriteLine("This node has attributes")
End If
Loop While nav.MoveToNext

End If
End If
Loop While nav.MoveToNext

'Pause.
Console.ReadLine()

End Sub

End Module

Ссылки