Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article explique comment interroger un XPathDocument
objet avec une expression XPath (XML Path Language) à l’aide de la XPathNavigator
classe.
Version du produit d’origine : Visual Studio, .NET Framework
Numéro de la base de connaissances d’origine : 308333
Résumé
XPath est utilisé par programmation 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
de la 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.
Note
- Cet exemple utilise un fichier nommé Books.xml. Vous pouvez créer votre propre fichier Books.xml, ou vous pouvez utiliser l’exemple inclus dans les guides de démarrage rapide 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 vous avez installé les guides de démarrage rapide, le fichier se trouve dans
Program Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transforxml\VB
le 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 vous pouvez utiliser l’exemple inclus dans les guides de démarrage rapide 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 vous avez installé les guides de démarrage rapide, le fichier se trouve dans
Assurez-vous que le projet fait référence à l’espace
System.Xml
de noms.Utilisez l’instruction
using
sur les espaces de noms etXPath
lesXml
espaces de noms afin que vous ne soyez pas obligé de qualifier les déclarations dans ces espaces de noms plus loin 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 un objet pour effectuer uneXPathNodeIterator
itération via 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
fichier avec l’exemple de fichier Books.xml. LaXPathDocument
classe utilise des transformations XSLT (Extensible Stylesheet Language Transformations) pour fournir un cache rapide et orienté performances pour le traitement des documents XML. Il est similaire au modèle DOM (Document Object Model) XML, mais est hautement optimisé pour le traitement XSLT et leXPath
modèle de données.// Open the XML. docNav = new XPathDocument(@"c:\books.xml");
Créez-en 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 la 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 trouver 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é à partir de laSelect
méthode deXPathNavigator
, pour parcourir les nœuds sélectionnés. Dans ce cas, vous pouvez utiliser laMoveNext
méthode de l’itérationXPathNodeIterator
sur 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 pour afficher plus facilement les résultats ci-dessus.// Pause Console.ReadLine();
Créez et exécutez votre projet.
Note
Les résultats s'affichent dans la fenêtre de la console.
Dépannage
Lorsque vous testez le code, vous pouvez recevoir le message d’erreur d’exception suivant :
Une exception non gérée 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.