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
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.Assurez-vous que le projet fait référence à l’espace de
System.Xml
noms .Utilisez l’instruction
Imports
sur lesXml
espaces de noms etXPath
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’instructionImports
avant toute autre déclaration.Imports System.Xml Imports System.Xml.XPath
Déclarez les variables appropriées. Déclarez un
XPathDocument
objet pour contenir le document XML et unXPathNavigator
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
Chargez un
XPathDocument
objet avec l’exemple de fichierBooks.xml
. LaXPathDocument
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")
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
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()
Utilisez la
MoveToFirstChild
méthode pour accéder aux enfants du document XML. LaMoveToFirstChild
méthode se déplace vers le premier enfant du nœud actuel. Dans le cas de laBooks.xml
source, vous quittez le document racine pour les enfants, laComment
section et le nœud Bookstore.'Move to the first child node (comment field). nav.MoveToFirstChild()
Utilisez la
MoveToNext
méthode pour itérer au sein des nœuds au niveau frère. LaMoveToNext
méthode passe au frère suivant du nœud actuel.'Loop through all the root nodes. Do ... Loop While nav.MoveToNext
Utilisez la
NodeType
propriété pour vous assurer que vous traitez uniquement les nœuds d’élément et utilisez laValue
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
Utilisez la
HasAttributes
propriété pour déterminer si un nœud a des attributs. Vous pouvez également utiliser d’autres méthodes, telles queMoveToNextAttribute
, 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
Utilisez la
ReadLine
méthode de l’objetConsole
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()
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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour