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
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.Verifique se o projeto faz referência ao
System.Xml
namespace.Use a
Imports
instrução nosXml
namespaces eXPath
para que você não seja obrigado a qualificar declarações nesses namespaces posteriormente em seu código. Você deve usar aImports
instrução antes de qualquer outra declaração.Imports System.Xml Imports System.Xml.XPath
Declare as variáveis apropriadas. Declare um
XPathDocument
objeto para manter o documento XML e umXPathNavigator
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
Carregue um
XPathDocument
objeto com o arquivoBooks.xml
de exemplo . AXPathDocument
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")
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
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()
Use o
MoveToFirstChild
método para migrar para os filhos do documento XML. OMoveToFirstChild
método se move para o primeiro filho do nó atual. No caso da origemBooks.xml
, você está se afastando do documento raiz para as crianças, aComment
seção e o nó Livraria.'Move to the first child node (comment field). nav.MoveToFirstChild()
Use o
MoveToNext
método para iterar por meio de nós no nível do irmão. OMoveToNext
método se move para o próximo irmão do nó atual.'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
Use a
NodeType
propriedade para garantir que você esteja processando apenas nós de elemento e use aValue
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
Use a
HasAttributes
propriedade para determinar se um nó tem atributos. Você também pode usar outros métodos, comoMoveToNextAttribute
, 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
Use o
ReadLine
método doConsole
objeto para adicionar uma pausa no final da exibição do console para exibir mais facilmente os resultados acima.'Pause. Console.ReadLine()
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de