La fonction XMLExécuteXPath permet l'exécution d'un requête XPATH sur un document XML. C'est intéressant pour la recherche d'une information contenue dans le document, afin d'éviter de programmer un parcours complet. Dans tout autre cas, l'utilisation du type XMLDocument reste très avantageuse pour le traitement de données XML.
sSourceXML est une chaîne = [
<?xml version="1.0" encoding="ISO-8859-1"?>
<articles>
<art famcod="Famille Demo" ref="789852">
<desi>Douilles 1/2</desi>
</art>
<art famcod="Famille Demo" ref="789465">
<desi>Valise de test</desi>
</art>
<art famcod="Famille Demo" ref="456987">
<desi>Visserie inox</desi>
</art>
<art famcod="Famille Demo" ref="123654">
<desi>Mousqueton rappel</desi>
</art>
<art famcod="Famille Demo" ref="789963">
<desi>Visserie vrac</desi>
</art>
<art famcod="Famille Demo" ref="963258">
<desi>Visserie titane</desi>
</art>
</articles>
]
soit sValRecherche = "Visserie"
SI xmlDocument("DocXML", sSourceXML) = Vrai ALORS
soit RequêteXPATH = "//art[contains(./desi,'"+sValRecherche+"')]"
SI XMLExecuteXPath("DocXML", RequêteXPATH) = Vrai ALORS
TANTQUE XMLTrouve("DocXML") = Vrai
Trace("---------------------------------------------")
Trace(sValRecherche+" trouvé >> "+XMLPosition("DocXML"))
Trace("Référence >> "+XMLDonnée("DocXML","ref"))
XMLSuivant("DocXML")
FIN
XMLAnnuleRecherche("DocXML")
FIN
XMLTermine("DocXML")
SINON
Erreur(ErreurInfo())
FIN
A noter avec cette solution, le parcours TANTQUE XMLTrouve ..., permet uniquement de se déplacer dans les résultats de la requête. Pour chaque itération, il n'est pas possible de se déplacer dans l'arborescence du document, même avec une mémorisation de la position avec XMLSauvePosition.
|