Naviguer dans XML avec la classe XPathNavigator à l’aide de Visual Basic

Cet article décrit quelques exemples d’étapes et d’exemples de code pour naviguer dans XML à l’aide de la XPathNavigator classe dans Visual Basic 2005 ou dans Visual Basic .NET.

Version d’origine du produit : Visual Basic 2005, Visual Basic .NET
Numéro de la base de connaissances d’origine : 301111

Résumé

Cet article pas à pas montre comment naviguer dans des documents XML (Extensible Markup Language) avec un XPathNavigator objet créé à partir d’un XPathDocument objet . Cet exemple charge un XPathDocument objet avec des données XML, crée un XPathNavigator objet en tant que vue sur les données et affiche le code XML en parcourant le document.

Pour obtenir une version Microsoft Visual C# de cet article, consultez Utiliser Visual C# pour naviguer dans des documents XML avec la classe XPathNavigator.

Configuration requise

La liste suivante décrit le matériel, les logiciels, l’infrastructure réseau et les Service Packs recommandés dont vous avez besoin :

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

Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :

  • Terminologie XML
  • Création et lecture de fichiers XML
  • Syntaxe XPath (XML Path Language)

Utiliser la classe XPathNavigator pour naviguer dans XML

  1. Dans Visual Studio 2005 ou dans Visual Studio. NET, créez une application console Visual Basic 2005 ou Visual Basic .NET.

    Remarque

    Cet exemple utilise un fichier nommé Books.xml. Vous pouvez créer votre propre fichier Books.xml ou utiliser l’exemple inclus dans les démarrages rapides du Kit de développement logiciel (SDK) .NET. Si les guides de démarrage rapide sont installés, Books.xml se trouve dans le dossier : \Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB

    Vous pouvez également obtenir ce fichier en visitant : Exemple de fichier XML (books.xml)

    Vous devez copier Books.xml dans le \Bin\Debug dossier qui se trouve sous le dossier dans lequel vous avez créé ce projet.

  2. Assurez-vous que le projet fait référence à l’espace de System.Xml noms .

  3. Utilisez l’instruction Imports sur les Xml espaces de noms et XPath afin que vous ne soyez pas obligé de qualifier les déclarations dans ces espaces de noms plus tard dans votre code. Vous devez utiliser l’instruction Imports avant toute autre déclaration.

    Imports System.Xml
    Imports System.Xml.XPath
    
  4. Déclarez les variables appropriées. Déclarez un XPathDocument objet pour contenir le document XML et un XPathNavigator objet pour évaluer les expressions XPath et parcourir le document. Déclarez un objet String pour contenir l’expression XPath. Ajoutez le code de déclaration dans la procédure main de Module1.

    Dim nav As XPathNavigator
    Dim docNav As XPathDocument
    
  5. Chargez un XPathDocument objet avec l’exemple de fichier Books.xml. La XPathDocument classe utilise XSLT (Extensible Stylesheet Language Transformations) pour fournir un cache rapide et orienté performances pour le traitement de documents XML. Il est similaire au modèle DOM (Document Object Model) XML, mais est hautement optimisé pour le traitement XSLT et le modèle de données XPath.

    'Open the XML.
    docNav = New XPathDocument("books.xml")
    
  6. Créez un XPathNavigator objet à partir du document. XPathNavigator vous permet de parcourir les nœuds d’attributs et les nœuds d’espace de noms dans un document XML.

    'Create a navigator to query with XPath.
    nav = docNav.CreateNavigator
    
  7. Accédez à la racine du document avec la MoveToRoot méthode . MoveToRoot définit le navigateur sur le nœud de document qui contient l’arborescence entière des nœuds.

    'Initial XPathNavigator to start at the root.
    nav.MoveToRoot()
    
  8. Utilisez la MoveToFirstChild méthode pour accéder aux enfants du document XML. La MoveToFirstChild méthode se déplace vers le premier enfant du nœud actuel. Dans le cas de la Books.xml source, vous quittez le document racine pour les enfants, la Comment section et le nœud Bookstore.

    'Move to the first child node (comment field).
    nav.MoveToFirstChild()
    
  9. Utilisez la MoveToNext méthode pour itérer au sein des nœuds au niveau frère. La MoveToNext méthode passe au frère suivant du nœud actuel.

    'Loop through all the root nodes.
    Do
    ...
    Loop While nav.MoveToNext
    
  10. Utilisez la NodeType propriété pour vous assurer que vous traitez uniquement les nœuds d’élément et utilisez la Value propriété pour afficher la représentation textuelle de l’élément.

    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. Utilisez la HasAttributes propriété pour déterminer si un nœud a des attributs. Vous pouvez également utiliser d’autres méthodes, telles que MoveToNextAttribute, pour passer à un attribut et inspecter sa valeur.

    Remarque

    Ce segment de code décrit uniquement les descendants du nœud racine et non l’arborescence entière.

    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. Utilisez la ReadLine méthode de l’objet Console pour ajouter une pause à la fin de l’affichage de la console afin d’afficher plus facilement les résultats ci-dessus.

    'Pause.
    Console.ReadLine()
    
  13. Générez et exécutez votre projet d’application console.

Liste complète du code

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

References