Comment faire pour une requête XML avec une expression XPath en utilisant Visual C#

Traductions disponibles Traductions disponibles
Numéro d'article: 308333 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Résumé

Cet article explique comment la requête d'un objet XPathDocument avec une expression de XML Path Language (XPath) à l'aide de la classe XPathNavigator . XPath est utilisée par programmation pour évaluer des expressions et sélectionnez des n?uds spécifiques dans un document.

Configuration requise

La liste suivante met en évidence le matériel recommandé, logiciel infrastructure réseau et service packs dont vous avez besoin :
  • Visual C#
Cet article suppose que vous êtes familiarisé avec les sujets suivants :
  • Terminologie XML
  • Création et en lisant un fichier XML
  • Syntaxe d'une expression XPath

Comment faire pour interroger le code XML avec une expression XPath

  1. Créez une nouvelle application de 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 vous pouvez utiliser l'exemple qui accompagne le quickstarts Kit de développement logiciel (SDK) .NET. Si vous n'avez pas le quickstarts installé et que vous ne souhaitez pas installer, reportez-vous à la section « Références » pour le Books.xml emplacement de téléchargement. Si vous avez le quickstarts installé, le fichier pouvez trouver dans le dossier suivant :
    Programme Files\Microsoft.NET\FrameworkSDK\Samples\Quickstart\Howto\Samples\Xml\Transformxml\VB
    Vous devez copier le fichier dans le dossier \Bin\Debug, qui se trouve sous le dossier dans lequel vous avez créé ce projet.
  2. Assurez-vous que le projet référence l'espace de noms System.XML .
  3. Utilisez l'instruction using sur les espaces de noms XML et XPath afin que vous n'êtes pas nécessaire de qualifier les déclarations dans les espaces de noms plus loin dans votre code. Vous devez utiliser l'instruction à l'aide d'antérieures à toute autre déclaration comme suit :
    using System.Xml;
    using System.Xml.XPath;
    					
  4. Déclarez les variables appropriées. Déclarer un objet XPathDocument pour contenir le document XML, un objet XpathNavigator pour évaluer des expressions XPath et un objet XPathNodeIterator pour l'itération des n?uds sélectionnés. Déclarer un objet String pour contenir les expressions XPath. Ajoutez le code de déclaration dans la fonction principale de Class1.
       XPathNavigator nav;
       XPathDocument docNav;
       XPathNodeIterator NodeIter;
       String strExpression;
    					
  5. Charger un XPathDocument dont le fichier d'exemple Books.xml. La classe XPathDocument utilise XSLT (Extensible Stylesheet Language Transformations) pour fournir un cache rapide et orientés de performances pour traitement des documents XML. Il est similaire à l'objet modèle DOM (document), mais est hautement optimisé pour traitement XSLT et le modèle de données XPath.
        // Open the XML.
        docNav = new XPathDocument(@"c:\books.xml");
    					
  6. Créer un XPathNavigator à partir du document. L'objet XPathNavigator est utilisé pour les requêtes XPath en lecture seule. Les requêtes XPath peuvent renvoyer une valeur de résultat ou de n?uds.
         // Create a navigator to query with XPath.
         nav = docNav.CreateNavigator();
    					
  7. Créer une expression XPath pour trouver le coût moyen d'un livre. Cette expression XPath renvoie une valeur unique. Pour complets plus de détails 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)";
    					
  8. Utilisez la méthode Evaluate de l'objet XPathNavigator pour évaluer l'expression XPath. La méthode Evaluate renvoie 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));
  9. Créer une expression XPath pour rechercher tous les ouvrages plus de dix euros de coût. Cette expression XPath renvoie uniquement les n?uds de titre de la source XML.
        // Find the title of the books that are greater then $10.00.
        strExpression = "/bookstore/book/title[../price>10.00]";
    					
  10. Créer un XPathNodeIterator pour les n?uds qui sont sélectionnés avec la méthode Select de la XPathNavigator . Le XPathNodeIterator représente une nodeset XPath et par conséquent prend en charge opérations sur cette nodeset.
        // Select the node and place the results in an iterator.
        NodeIter = nav.Select(strExpression);
  11. Utilisez la XPathNodeIterator , qui a été renvoyé à partir de la méthode Select de XPathNavigator , pour parcourir les n?uds sélectionnés. Dans ce cas, vous pouvez utiliser la méthode MoveNext de la XPathNodeIterator pour effectuer une itération dans 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);
      };
    					
  12. Utilisez la méthode ReadLine pour ajouter une pause à la fin de l'affichage console pour afficher plus facilement les résultats ci-dessus.
        // Pause
        Console.ReadLine();
    					
  13. Générez et exécutez votre projet. Notez que 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 exception suivante :
Une exception non gérée du type « System.Xml.XmlException » s'est produite dans System.xml.dll

Des 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 provoquée par une instruction de traitement non valide. Par exemple, l'instruction de traitement peut contenir des espaces superflus. Voici un exemple d'une instruction de traitement non valide :
<?xml version='1.0' ?>
pour résoudre l'exception, effectuez une des opérations suivantes :
  • Corrigez l'instruction de traitement non valide. Voici un exemple d'une instruction de traitement valide :
    <?xml version='1.0'?>
    - ou -
  • Supprimez l'instruction de traitement XML du fichier Books.xml.

Références

Le fichier suivant est téléchargeable à partir du Centre de téléchargement Microsoft :
Réduire cette imageAgrandir cette image
Download
Download Books.xml now
Pour plus d'informations, reportez-vous au adresse aux sites Web de Microsoft aux adresses suivantes :
XML dans .NET : classes XML de .NET Framework et Visual c# offre simple, évolutive données manipulation
http://msdn.microsoft.com/msdnmag/issues/01/01/xml/default.aspx

Classe XPathNavigator
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnavigator.aspx

Classe XPathDocument
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathdocument.aspx

Classe XPathNodeIterator
http://msdn.microsoft.com/en-us/library/system.xml.xpath.xpathnodeiterator.aspx

Transformations XSLT avec la classe XslTransform
http://msdn.microsoft.com/en-us/library/47yh29a9.aspx

Syntaxe d'une expression XPath
http://msdn2.microsoft.com/en-us/library/ms763742.aspx
Pour plus d'informations sur XPath, reportez-vous au site de Web World Wide Web Consortium (W3C) suivant :
(XPath) XML Path Language
Version 1.0 : la recommandation W3C 16 novembre 1999
http://www.w3.org/TR/1999/REC-xpath-19991116

Propriétés

Numéro d'article: 308333 - Dernière mise à jour: jeudi 13 mars 2008 - Version: 7.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# 2008 Express Edition
  • Microsoft Visual C# .NET 2002 Initiation
Mots-clés : 
kbmt kbdownload kbhowtomaster KB308333 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 308333
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com