Utiliser Visual C# pour interroger du code XML avec une expression XPath
Cet article explique comment interroger un XPathDocument
objet avec une expression XPath (XML Path Language) à l’aide de la XPathNavigator
classe .
Version d’origine du produit : Visual Studio, .NET Framework
Numéro de la base de connaissances d’origine : 308333
Résumé
XPath est utilisé par programme pour évaluer des expressions et sélectionner des nœuds spécifiques dans un document.
Cet article fait référence à l’espace de noms System.Xml.XPath
bibliothèque de classes Microsoft .NET Framework .
Cet article suppose que vous êtes familiarisé avec les rubriques suivantes :
- Visual C#
- Terminologie XML
- Création et lecture d’un fichier XML
- Syntaxe XPath
Interroger du code XML avec une expression XPath
Créez une application console Visual C# dans Visual Studio.
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 vous n’avez pas installé les guides de démarrage rapide et que vous ne souhaitez pas les installer, consultez la section Références pour l’emplacement de téléchargement Books.xml. Si les guides de démarrage rapide sont installés, le fichier se trouve dans le
Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transforxml\VB
dossier . Vous pouvez copier le fichier dans le\Bin\Debug
dossier, qui se trouve sous le dossier dans lequel vous avez créé ce projet.
- 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 vous n’avez pas installé les guides de démarrage rapide et que vous ne souhaitez pas les installer, consultez la section Références pour l’emplacement de téléchargement Books.xml. Si les guides de démarrage rapide sont installés, le fichier se trouve dans le
Assurez-vous que le projet fait référence à l’espace de
System.Xml
noms .Utilisez l’instruction
using
sur lesXml
espaces de noms etXPath
afin de ne pas avoir à qualifier les déclarations dans ces espaces de noms ultérieurement dans votre code. Vous pouvez utiliser l’instructionusing
avant toute autre déclaration, comme suit :using System.Xml; using System.Xml.XPath;
Déclarez les variables appropriées. Déclarez un
XPathDocument
objet pour contenir le document XML, unXpathNavigator
objet pour évaluer des expressions XPath et unXPathNodeIterator
objet pour itérer au sein des nœuds sélectionnés. Déclarez unString
objet pour contenir les expressions XPath. Ajoutez le code de déclaration dans laMain
fonction dansClass1
.XPathNavigator nav; XPathDocument docNav; XPathNodeIterator NodeIter; String strExpression;
Chargez un
XPathDocument
avec l’exemple de fichier Books.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 il est hautement optimisé pour le traitement XSLT et le modèle deXPath
données.// Open the XML. docNav = new XPathDocument(@"c:\books.xml");
Créez un à
XPathNavigator
partir du document. L’objetXPathNavigator
est utilisé pour les requêtes XPath en lecture seule. Les requêtes XPath peuvent retourner une valeur résultante ou de nombreux nœuds.// Create a navigator to query with XPath. nav = docNav.CreateNavigator();
Créez une expression XPath pour trouver le coût moyen d’un livre. Cette expression XPath retourne une valeur unique. Pour plus d’informations sur la syntaxe XPath, consultez Syntaxe XPath dans la section Références .
// Find the average cost of a book. // This expression uses standard XPath syntax. strExpression = "sum(/bookstore/book/price) div count(/bookstore/book/price)";
Utilisez la
Evaluate
méthode de l’objetXPathNavigator
pour évaluer l’expression XPath. LaEvaluate
méthode retourne les résultats de l’expression.// Use the Evaluate method to return the evaluated expression. Console.WriteLine("The average cost of the books are {0}", nav.Evaluate(strExpression));
Créez une expression XPath pour rechercher tous les livres qui coûtent plus de 10 dollars. Cette expression XPath retourne uniquement les nœuds Title de la source XML.
// Find the title of the books that are greater then $10.00. strExpression = "/bookstore/book/title[../price>10.00]";
Créez un
XPathNodeIterator
pour les nœuds sélectionnés avec laSelect
méthode duXPathNavigator
. représenteXPathNodeIterator
un ensemble de nœuds XPath et prend en charge les opérations sur cet ensemble de nœuds.// Select the node and place the results in an iterator. NodeIter = nav.Select(strExpression);
Utilisez le
XPathNodeIterator
, qui a été retourné par laSelect
méthode deXPathNavigator
, pour parcourir les nœuds sélectionnés. Dans ce cas, vous pouvez utiliser laMoveNext
méthode de pourXPathNodeIterator
itérer tous les nœuds sélectionnés.Console.WriteLine("List of expensive books:"); //Iterate through the results showing the element value. while (NodeIter.MoveNext()) { Console.WriteLine("Book Title: {0}", NodeIter.Current.Value); };
Utilisez la
ReadLine
méthode 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.
Remarque
Les résultats sont affichés dans la fenêtre de console.
Résolution des problèmes
Lorsque vous testez le code, vous pouvez recevoir le message d’erreur d’exception suivant :
Exception non prise en charge de type System.Xml. XmlException s’est produite dans System.xml.dll
Informations supplémentaires : Erreur système.
L’erreur d’exception se produit sur la ligne de code suivante :
docNav = new XPathDocument("c:\\books.xml");
L’erreur d’exception est due à une instruction de traitement non valide. Par exemple, l’instruction de traitement peut contenir des espaces superflus. L’exemple suivant est une instruction de traitement non valide :
<?xml version='1.0' ?>
Pour résoudre l’exception, utilisez l’une des résolutions suivantes :
Corrigez l’instruction de traitement non valide. L’exemple suivant est une instruction de traitement valide :
<?xml version='1.0'?>
Supprimez l’instruction de traitement XML du fichier Books.xml.
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