Comment faire pour exécuter les requêtes XPath en utilisant les classes System.Xml.XPath

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

Sommaire

Résumé

Cet article étape par étape explique comment utiliser les classes dans l'espace de noms System.Xml.XPath pour exécuter des requêtes de XPath dans les applications .NET.

Découvrez l'espace de noms System.Xml.XPath

L'espace de noms System.Xml.XPath contient l'analyseur XPath et du moteur d'évaluation de .NET Framework. L'espace de noms System.Xml.XPath prend en charge la recommandation de version 1.0 (XPath) XML Path Language World Wide Web Consortium (W3C). Pour plus d'informations sur la recommandation XPath, reportez-vous au site Web W3C suivant :
XML Path Language (XPath) Version 1.0
L'espace de noms System.Xml.XPath contient également les classes suivantes sont optimisées pour exécuter les requêtes XPath et naviguer les jeux de résultats généré par programme :
  • XPathDocument : de performances élevées, lire - uniquement mettre en cache pour traiter les documents XML et de flux. XPathDocument est optimisé pour traitement XSLT (Extensible Stylesheet Language Transformation) et le modèle de données XPath. XPathDocument utilise le modèle d'objet document (DOM), en fonction de l'analyse du modèle (charger les données XML source dans une arborescence en mémoire) mais n'implémente pas les interfaces requises pour insérer, modifier ou supprimer des n?uds dans un document XML (Extensible Markup Language) ou un flux.
  • XPathNavigator : cette classe est basée sur le modèle de données XPath. XPathNavigator fournit les méthodes requis pour pouvoir exécuter des requêtes XPath sur des données XML qui sont chargées dans un XPathDocument . XPathNavigator est instancié Aide de la méthode CreateNavigator d'un objet XPathDocument . Vous pouvez également utiliser XPathNavigator pour compiler les expressions de requête XPath fréquemment exécutées et générer un objet System.Xml.XPath.XPathExpression qui encapsule la requête compilé.
  • XPathNodeIterator : fournit un transfert itérateur uniquement - uniquement, lecture -. Lorsque vous utilisez la méthode Select d'un objet XPathNavigator pour exécuter une requête XPath, une instance de XPathNodeIterator est créée. Vous pouvez utiliser XPathNodeIterator pour naviguer le jeu de résultats qui est généré par la requête de XPath.
  • XPathExpression : encapsule une expression de requête de XPath compilée. Vous devez compiler une expression de requête de XPath avant d'exécuter l'expression de requête. Une expression XPath compilée contient une syntaxe qui est vérifié pour être conforme à la spécification W3C XPath Query Language. Un appel à la méthode de compilation d'un objet XPathNavigator renvoie la classe XPathExpression . En règle générale, vous utilisez XPathExpression pour fournir une précompilé requête expression XPath d'un appel à la méthode Select d'un objet XPathNavigator .
  • XPathException : exception le .NET Framework qui est générée lors d'une erreur se produit lors du traitement d'une expression de requête de XPath. La méthode Select et la méthode de compilation de la classe XPathNavigator peuvent déclencher XPathException .

Créer des documents XML exemple

Pour créer deux exemples XML documents à utiliser dans l'exemple de code .NET suivante, procédez comme suit :
  1. Le bloc-notes Utilisation ou un éditeur de texte similaire pour coller le code suivant dans un nouveau document XML nommé Books.xml. Enregistrez le document dans le dossier racine sur votre disque dur.
    <?xml version='1.0'?>
    <Books>
    <Book>
      <Title>Beginning XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>XML Step by Step</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    <Book>
      <Title>Professional XML</Title>
      <Publisher>Wrox</Publisher>
    </Book>
    <Book>
      <Title>Developing XML solutions</Title>
      <Publisher>MSPress</Publisher>
    </Book>
    </Books>
    					
  2. Le bloc-notes Utilisation ou un éditeur de texte similaire pour coller le code suivant dans un nouveau document XML nommé DotNetBooks.xml. Enregistrez le document dans le dossier racine sur votre disque dur.
    <?xml version='1.0'?>
    <DotNetBooks>
    <DotNetBook>
      <Title>Professional C#</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>ADO.Net Core Reference</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Professional VB.Net</Title>
      <Publisher>Wrox</Publisher>
    </DotNetBook>
    <DotNetBook>
      <Title>Inside C#</Title>
      <Publisher>MSPress</Publisher>
    </DotNetBook>
    </DotNetBooks>

Créez un projet .NET de Visual Basic

  1. Démarrez Visual Studio .NET et puis créez un nouveau projet de application Windows Visual Basic .NET.
  2. Faites glisser deux contrôles de bouton de la boîte à outils sur Form1.vb.
  3. Collez le code suivant dans la procédure Click_Event du premier bouton de commande :
    'Instantiate the XPathDocument class.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Instantiate the XPathNavigator class.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Instantiate the XPathIterator class.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Use the XPathIterator class to navigate through the generated resultset
    'and then display the selected Titles.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  4. Lisez les commentaires en ligne pour comprendre la fonctionnalité du code. Soyez attentif spécifique au comment le code instancie et utilise les instances d'objet de chacune des classes dans l'espace de noms System.Xml.XPath . Notez qu'une chaîne Spécifie le paramètre d'expression de requête de XPath dans l'appel de la méthode Select de l'objet XPathNavigator .
  5. Collez le code suivant dans la procédure Click_Event du deuxième bouton de commande :
    'Construct the XPathDocument by specifying the path to Books.xml.
    Dim xmldoc As New System.Xml.XPath.XPathDocument("c:\books.xml")
    
    'Create the XPathNavigator.
    Dim nav As System.Xml.XPath.XPathNavigator = xmldoc.CreateNavigator()
    
    'Compile the XPath query expression to identify all MSPress Titles.
    'The Compile method of the XPathNavigator generates an XPathExpression object
    'that encapsulates the compiled query expression.
    
    Dim expr As System.Xml.XPath.XPathExpression = nav.Compile("//Publisher[. = 'MSPress']/parent::node()/Title")
    
    'Execute the Select method of the XPathNavigator to create the XPathNodeIterator.
    'Note that the sample code supplies the XPathExpression object as the query expression parameter.
    Dim iterator As System.Xml.XPath.XPathNodeIterator = nav.Select(expr)
    
    System.Diagnostics.Debug.WriteLine("MSPress titles in books.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
        System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    
    
    'Release the XPathDocument and XPathNavigator.
    xmldoc = Nothing
    nav = Nothing
    
    System.Diagnostics.Debug.WriteLine(vbCrLf & "MSPress titles in DotNetBooks.xml...")
    System.Diagnostics.Debug.WriteLine("******************************")
    
    'Specify the path to DotNetBooks.xml to reconstruct the XPathDocument.
    xmldoc = New System.Xml.XPath.XPathDocument("c:\DotNetBooks.xml")
    
    'Create the XPathNavigator.
    nav = xmldoc.CreateNavigator()
    
    'Reuse the XPathExpression that you compiled previously to locate
    'all MSPress titles in DotNetBooks.xml.
    
    'You can reuse the XPathExpression because the hierarchy of elements that are referenced
    'in the XPath query is the same in Books.xml and DotNetBooks.xml. 
    'For example, the Publisher element is a child of the Title element in both XML documents.
    'The hierarchy must be identical for you to reuse the same XPathExpression object
    'across different XML documents/streams.
    
    'When you use an XPathExpression object, and the Select method executes,
    'the XPath query is not recompiled. 
    
    iterator = nav.Select(expr)
    
    'Use the iterator to navigate the generated resultset.
    Do While iterator.MoveNext
         System.Diagnostics.Debug.WriteLine(iterator.Current.Value)
    Loop
    					
  6. Lisez les commentaires en ligne pour comprendre la fonctionnalité du code. Soyez attentif spécifique au comment le code exemple instancie l'objet XPathExpression la première fois (contre Books.xml) et puis réutilise l'objet lorsque la requête de XPath exécute la deuxième fois (contre DotNetBooks.xml).

Tester le projet

  1. Enregistrer les modifications dans le projet Visual Basic .NET et ensuite exécuter le projet.
  2. Lorsque le formulaire s'affiche, cliquez sur le premier bouton de commande pour exécuter le code utilise une chaîne pour spécifier l'expression de requête de XPath. Le résultat de la requête XPath spécifiée par rapport à Books.xml apparaît comme suit :
    XML Step by Step
    Developing XML solutions
    					
  3. Cliquez sur le deuxième bouton de commande pour exécuter le code qui utilise un objet XPathExpression pour spécifier l'expression de requête de XPath. Le résultat de la requête XPath spécifiée par rapport Books.xml et DotNetBooks.xml apparaît comme suit :
    MSPress titles in books.xml...
    ******************************
    XML Step by Step
    Developing XML solutions
    
    MSPress titles in DotNetBooks.xml...
    ******************************
    ADO.Net Core Reference
    Inside C#
    					

Propriétés

Numéro d'article: 317069 - Dernière mise à jour: vendredi 12 août 2005 - Version: 4.2
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft .NET Framework 1.1
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft .NET Framework 1.0
Mots-clés : 
kbmt kbhowtomaster KB317069 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: 317069
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