Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

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

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
Pour une version de Microsoft Visual Basic .NET de cet article, voir 301220.

Cet article se réfère à l'espace de noms bibliothèque de classes Microsoft .NET Framework suivant :
  • System.Xml.XPath

DE CETTE TÂCHE

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.

back to the top

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
back to the top

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.
back to the top

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.
back to the top
Références
Le fichier suivant est téléchargeable à partir du Centre de téléchargement Microsoft :
Pour plus d'informations, reportez-vous au adresse aux sites Web de Microsoft aux adresses suivantes : 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
back to the top

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 308333 - Dernière mise à jour : 03/13/2008 20:02:27 - Révision : 7.2

Microsoft ADO.NET 1.0, Microsoft Visual C# 2008 Express Edition, Microsoft Visual C# .NET 2002 Initiation

  • kbmt kbdownload kbhowtomaster KB308333 KbMtfr
Commentaires