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
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindowsCode Utilisateur (MCU) 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
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindowsCode Utilisateur (MCU) 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
WINDEVWEBDEV - Code ServeurEtats et RequêtesWindowsCode Utilisateur (MCU) 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