26 juillet 2013
publié par 
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.

Voici un exemple complet qui peut être copié/collé dans un bouton pour expérimentation. Il viendra sous peu compléter les exemples déjà présents dans l'aide) :

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
// Parcours terminé, on termine la requête
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.



< Retour

Publier un commentaire : 
Votre adresse email ne sera pas publiée