Utiliser la fonction XPath contains() lorsque vous programmez le DOM MSXML

Cet article explique comment utiliser la contains() XPath fonction lorsque vous programmez le DOM MSXML.

Version d’origine du produit : Microsoft XML
Numéro de la base de connaissances d’origine : 304265

Résumé

Lorsque vous utilisez le modèle DOM (Document Object Model) Microsoft XML (MSXML) dans le code pour charger et analyser un document XML, il est courant d’identifier les éléments et/ou les éléments avec des attributs dont les données contiennent une valeur de chaîne ou un mot spécifié. Cet article documente un exemple de code qui montre comment utiliser la fonction de chaîne XPath (XML Path Language) pour implémenter cette exigence.

Exemple pas à pas

  1. Dans le Bloc-notes, créez un document XML nommé Books.xml, puis collez le code XML suivant :

    <?xml version="1.0"?>
    <!-- This file represents a fragment of a bookstore inventory database -->
    <bookstore specialty="novel">
     <book>
         <Title>Beginning XML</Title>
         <Publisher>Wrox</Publisher>
     </book>
     <book>
         <Title>Professional XML</Title>
         <Publisher>Wrox</Publisher>
     </book>
     <book>
         <Title>Programming ADO</Title>
         <author>
             <first-name>Mary</first-name>
             <last-name>Bob</last-name>
         </author>
         <datePublished>1/1/2000</datePublished>
         <Publisher>Microsoft Press</Publisher>
     </book>
    </bookstore>
    
  2. Enregistrez Books.xml dans le dossier racine du lecteur C.

  3. Ouvrez un nouveau projet EXE Standard dans Microsoft Visual Basic. Form1 est créé par défaut.

  4. Dans le menu Projet, cliquez sur Références, puis sélectionnez la zone microsoft XML 3.0 case activée.

  5. Faites glisser un bouton Commande, puis déposez-le sur Form1.

  6. Copiez et collez le code suivant dans la procédure événementielle Click du bouton Commande :

    Dim doc As MSXML2.DOMDocument
    Dim nlist As MSXML2.IXMLDOMNodeList
    Dim node As MSXML2.IXMLDOMNode
    
    Set doc = New MSXML2.DOMDocument
    doc.setProperty "SelectionLanguage", "XPath"
    doc.Load "c:\books.xml"
    Set nlist = doc.selectNodes("//book/Title[contains(.,'ADO')]")
    MsgBox "Matching Nodes : " & nlist.length
    
    For Each node In nlist
        Debug.Print node.nodeName & " : " & node.Text
    Next
    
  7. Le code précédent charge le code XML de Books.xml dans un instance de l’objet DOMDocument MSXML. Il exécute ensuite une requête XPath qui utilise la contains XPath fonction pour identifier tous les titres de livre qui contiennent le mot ADO. Enfin, la boucle For itère au sein des nœuds sélectionnés et affiche les titres correspondants identifiés en exécutant la requête XPath.

  8. Le premier paramètre de la contains XPath fonction est utilisé pour spécifier le nœud ou la chaîne source sur lequel la comparaison doit être exécutée. Le deuxième paramètre est une chaîne qui spécifie le mot ou la valeur de chaîne à rechercher dans le nœud source. Il est important de se rappeler que la chaîne ou le mot fourni en tant que deuxième paramètre de la fonction contains respecte la casse.