Navegue XML com a classe XPathNavigator usando o Visual Basic

Este artigo descreve algumas etapas de exemplo e código de exemplo para navegar XML usando a XPathNavigator classe no Visual Basic 2005 ou no Visual Basic .NET.

Versão original do produto: Visual Basic 2005, Visual Basic .NET
Número de KB original: 301111

Resumo

Este artigo passo a passo ilustra como navegar por documentos da XML (Linguagem de Marcação Extensível) com um XPathNavigator objeto criado a partir de um XPathDocument objeto. Este exemplo carrega um XPathDocument objeto com dados XML, cria um objeto como uma exibição XPathNavigator sobre os dados e exibe o XML andando pelo documento.

Para obter uma versão do Microsoft Visual C# deste artigo, consulte Usar o Visual C# para navegar por documentos XML com a classe XPathNavigator.

Requisitos

A lista a seguir descreve os pacotes de serviço, software, infraestrutura de rede e hardware recomendados que você precisa:

  • Windows Server 2003, Windows 2000 Professional, Windows 2000 Server, Windows 2000 Advanced Server ou Windows NT servidor 4.0
  • Visual Studio 2005 ou Visual Studio .NET

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Terminologia XML
  • Criando e lendo arquivos XML
  • Sintaxe XML Path Language (XPath)

Usar a classe XPathNavigator para navegar XML

  1. No Visual Studio 2005 ou no Visual Studio. NET, crie um Visual Basic 2005 ou Visual Basic .NET Console Application.

    Observação

    Este exemplo usa um arquivo chamado Books.xml. Você pode criar seu próprio arquivo Books.xml ou usar o exemplo que está incluído com os inícios rápidos do .NET Software Development Kit (SDK). Se você tiver os Inícios Rápidos instalados, Books.xml estará localizado na pasta: \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    Como alternativa, você pode obter esse arquivo visitando: Arquivo XML de exemplo (books.xml)

    Você deve copiar Books.xml para a \Bin\Debug pasta localizada na pasta na qual você criou esse projeto.

  2. Verifique se o projeto faz referência ao System.Xml namespace.

  3. Use a Imports instrução nos Xml namespaces e XPath para que você não seja obrigado a qualificar declarações nesses namespaces posteriormente em seu código. Você deve usar a Imports instrução antes de qualquer outra declaração.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Declare as variáveis apropriadas. Declare um XPathDocument objeto para manter o documento XML e um XPathNavigator objeto para avaliar expressões XPath e passar pelo documento. Declare um objeto String para manter a expressão XPath. Adicione o código de declaração no procedimento Principal no Módulo1.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. Carregue um XPathDocument objeto com o arquivo Books.xmlde exemplo . A XPathDocument classe usa o XSLT (Extensible Stylesheet Language Transformations) para fornecer um cache rápido e orientado ao desempenho para processamento de documentos XML. Ele é semelhante ao DOM (Modelo de Objeto de Documento XML), mas é altamente otimizado para o processamento XSLT e o modelo de dados XPath.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Crie um XPathNavigator objeto a partir do documento. XPathNavigator permite que você mova os nós de atributos e os nós do namespace em um documento XML.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. Mova para a raiz do documento com o MoveToRoot método. MoveToRoot define o navegador como o nó de documento que contém toda a árvore de nós.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. Use o MoveToFirstChild método para migrar para os filhos do documento XML. O MoveToFirstChild método se move para o primeiro filho do nó atual. No caso da origem Books.xml , você está se afastando do documento raiz para as crianças, a Comment seção e o nó Livraria.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Use o MoveToNext método para iterar por meio de nós no nível do irmão. O MoveToNext método se move para o próximo irmão do nó atual.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. Use a NodeType propriedade para garantir que você esteja processando apenas nós de elemento e use a Value propriedade para exibir a representação de texto do elemento.

    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. Use a HasAttributes propriedade para determinar se um nó tem atributos. Você também pode usar outros métodos, como MoveToNextAttribute, para mover para um atributo e inspecionar seu valor.

    Observação

    Esse segmento de código só percorre os descendentes do nó raiz e não toda a árvore.

    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. Use o ReadLine método do Console objeto para adicionar uma pausa no final da exibição do console para exibir mais facilmente os resultados acima.

    'Pause.
    Console.ReadLine()
    
  13. Crie e execute seu projeto de Aplicativo de Console.

Lista de código completa

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

Referências