DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion des fichiers XML
  • Exemple d'interrogation du contenu d'un document XML
  • Exemple d'interrogation du contenu d'un document XML
  • Exemple de recherche sur le contenu d'un attribut
XMLExécuteXPath (Exemple)
Exemple d'interrogation du contenu d'un document XML
WEBDEV - Code ServeurWindows La requête XPATH permet de récupérer en 1 fois 3 informations = titre, résumé et url. Voici la requête "//entry/title | //entry/summary | //entry/link"
SourceXML est une chaîne = [
<?xml version="1.0" encoding="ISO-8859-1"?>
<feed>
<auteur>Patrick</auteur>
<entry>
<title type='text'>Un petit moment de bonheur</title>
<summary type='text'>La vraie vie tout simplement</summary>
<link type='application/atom+xml' href='http://somewhere/atom?authkey=WgHbgT990V8'></link>
<link type='text/html' href='http://somewhere?authkey=WgHbgT990V8'></link>
</entry>
<entry>
<title type='text'>Pris sur le vif</title>
<summary type='text'>Après la chute (sans gravité grâce aux protections) en roller</summary>
<link type='application/atom+xml' href='http://somewhere/atom?authkey=Wg4sdf4ee'></link>
<link type='text/html' href='http://somewhere?authkey=Wg4sdf4ee'></link>
</entry>
</feed>
]
SI XMLDocument("DocXML", SourceXML) = Vrai ALORS
      RequêteXPATH est une chaîne
      RequêteXPATH = "//entry/title | //entry/summary | //entry/link"
SI XMLExécuteXPath("DocXML", RequêteXPATH) = Vrai ALORS
TANTQUE XMLTrouve("DocXML") = Vrai
Trace("Titre = " + XMLDonnée("DocXML"))
XMLSuivant("DocXML")
Trace("Résumé = " + XMLDonnée("DocXML"))
XMLSuivant("DocXML")
TANTQUE XMLTrouve("DocXML") ET XMLNomElément("DocXML") = "link"
SI XMLDonnée("DocXML","type") = "text/html" ALORS
Trace("Url = " + XMLDonnée("DocXML", "href"))
FIN
XMLSuivant("DocXML")
FIN
FIN
FIN
XMLTermine("DocXML")
SINON
Erreur(ErreurInfo())
FIN
Exemple d'interrogation du contenu d'un document XML
WEBDEV - Code ServeurWindows L'exploration se fait avec l'instruction XMLExécuteXPath.
Pour l'exemple il s'agit de récupérer dans le document XML :
  • des données de l'entête,
  • des données concernant des personnes dans la suite du document.
Le document a la forme ci-dessous, pour tester l'exemple.
Créez un fichier texte avec ce code en le nommant test.xml et placez le dans le répertoire \exe\ de votre projet.
<SERVICES>
<PARAMETRES>
<TYPE>AZ0256</TYPE>
<DATE>20070115</DATE>
</PARAMETRES>
<DONNEES>
<PERSONNES>
<PERSONNE>
<TYPE>AB</TYPE>
<ID>156</ID>
<NOM_USAGE></NOM_USAGE>
<PRENOM>LOMBARD</PRENOM>
<NOM_PATRONYMIQUE>SEBASTIEN</NOM_PATRONYMIQUE>
<CIVILITE>1</CIVILITE>
</PERSONNE>
<PERSONNE>
<TYPE>AC</TYPE>
<ID>246</ID>
<NOM_USAGE></NOM_USAGE>
<PRENOM>CLAUDE</PRENOM>
<NOM_PATRONYMIQUE>BERNAD</NOM_PATRONYMIQUE>
<CIVILITE>1</CIVILITE>
</PERSONNE>
<PERSONNE>
<TYPE>AB</TYPE>
<ID>247</ID>
<NOM_USAGE></NOM_USAGE>
<PRENOM>BERNADETTE</PRENOM>
<NOM_PATRONYMIQUE>RAMONDI</NOM_PATRONYMIQUE>
<CIVILITE>2</CIVILITE>
</PERSONNE>
<PERSONNE>
<TYPE>AB</TYPE>
<ID>248</ID>
<NOM_USAGE>NOGARD</NOM_USAGE>
<PRENOM>AMELIE</PRENOM>
<NOM_PATRONYMIQUE>DEMANGE</NOM_PATRONYMIQUE>
<CIVILITE>3</CIVILITE>
</PERSONNE>
</PERSONNES>
</DONNEES>
</SERVICES>
nPositionDocument est un entier
XMLDocument("DocXML", fChargeTexte("D:\TESTS CLIENTS\2007-01\071109\test.xml"))
// Récupération du type dans l'entête du document
XMLExécuteXPath("DocXML", "/SERVICES/PARAMETRES/TYPE")
Trace(XMLDonnée("DocXML"))
// Récupération de la date dans l'entête du document
XMLExécuteXPath("DocXML", "/SERVICES/PARAMETRES/DATE")
Trace(DateVersChaîne(XMLDonnée("DocXML")))
// Parcours de toutes les personnes contenues dans le document
XMLExécuteXPath("DocXML", "/SERVICES/DONNEES/PERSONNES/PERSONNE")
TANTQUE XMLTrouve("DocXML") = Vrai
Trace(" ")
Trace(XMLPosition("DocXML"))
nPositionDocument = XMLSauvePosition("DocXML")
XMLFils("DocXML")
TANTQUE PAS XMLEnDehors("DocXML")
Trace(" >> "+XMLNomElément("DocXML")+" : " + XMLDonnée("DocXML"))
XMLSuivant("DocXML")
FIN
XMLRetourPosition("DocXML", nPositionDocument)
XMLSuivant("DocXML")
FIN
Exemple de recherche sur le contenu d'un attribut
WEBDEV - Code ServeurWindows La recherche se fait avec l'instruction XMLExécuteXPath.
Pour l'exemple il s'agit de récupérer dans une liste d'articles, tous les attributs des articles dont l'attribut désignation contient "Visserie" :
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
 
RequêteXPATH est une chaîne = "//art[contains(./desi,'"+sValRecherche+"')]"
 
SI XMLExécuteXPath("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
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale