Parseur XML
Le
Doomsday
Bonjour,
J'aimerais récupérer les informations d'un fichier XML de la forme :
<root>
<header>
<id/>
<name/>
</header>
<result>
<col>1</col>
<col>john</col>
</result>
</root>
C'est moi qui le génère, je peux éventuellement changer sa structure
pour l'adapter aux facilités de Windev.
Voilà Je sais pas si mon code Windev est compréhensible, mais
j'essaie tout bonnement de parcourir le fichier XML à la conquête des
données qui se trouvent à l'intérieur. Actuellement, voilà ce que
j'ai :
// Récupère la structure du header
XMLDocument("doc.xml", ..)
XMLRecherche("doc.xml", "header", XMLBalise)
XMLPremier("doc.xml")
XMLRecherche("doc.xml", Null, XMLBalise+XMLSousElément)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
headers += XMLNomElément("doc.xml") + TAB // je stocke le nom des
balises
XMLSuivant("doc.xml")
FIN
// remets à zéro
XMLAnnuleRecherche("doc.xml")
XMLRacine("doc.xml")
// cherche les résultats
XMLRecherche("doc.xml", Null,XMLBalise)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
SI XMLNomElément("doc.xml") = "result" ALORS
// essaie désespérement de rechercher toutes les balises
"col"
XMLRecherche("doc.xml", "col", XMLBalise+XMLSousElément)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
str += XMLDonnée("doc.xml") // essaie de récupérer
le contenu
XMLSuivant("doc.xml")
FIN
FIN
XMLRecherche("doc.xml",Null,XMLBalise+XMLContinue)
XMLPremier("doc.xml")
FIN
La récupération du header se passe bien, mais il y a un problème
quand je rentre dans la grosse boucle, je n'ai pas encore réussi à
récupérer le contenu d'une sous balise (ici <col>).
Merci pour l'aide!
J'aimerais récupérer les informations d'un fichier XML de la forme :
<root>
<header>
<id/>
<name/>
</header>
<result>
<col>1</col>
<col>john</col>
</result>
</root>
C'est moi qui le génère, je peux éventuellement changer sa structure
pour l'adapter aux facilités de Windev.
Voilà Je sais pas si mon code Windev est compréhensible, mais
j'essaie tout bonnement de parcourir le fichier XML à la conquête des
données qui se trouvent à l'intérieur. Actuellement, voilà ce que
j'ai :
// Récupère la structure du header
XMLDocument("doc.xml", ..)
XMLRecherche("doc.xml", "header", XMLBalise)
XMLPremier("doc.xml")
XMLRecherche("doc.xml", Null, XMLBalise+XMLSousElément)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
headers += XMLNomElément("doc.xml") + TAB // je stocke le nom des
balises
XMLSuivant("doc.xml")
FIN
// remets à zéro
XMLAnnuleRecherche("doc.xml")
XMLRacine("doc.xml")
// cherche les résultats
XMLRecherche("doc.xml", Null,XMLBalise)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
SI XMLNomElément("doc.xml") = "result" ALORS
// essaie désespérement de rechercher toutes les balises
"col"
XMLRecherche("doc.xml", "col", XMLBalise+XMLSousElément)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") = Faux
str += XMLDonnée("doc.xml") // essaie de récupérer
le contenu
XMLSuivant("doc.xml")
FIN
FIN
XMLRecherche("doc.xml",Null,XMLBalise+XMLContinue)
XMLPremier("doc.xml")
FIN
La récupération du header se passe bien, mais il y a un problème
quand je rentre dans la grosse boucle, je n'ai pas encore réussi à
récupérer le contenu d'une sous balise (ici <col>).
Merci pour l'aide!

Poser une question


Petite question, est-ce qu'il peut y avoir plusieur groupes de balises
<result> ?
Pourquoi ne pas utiliser XPath pour acceder aux résultat. Genre :
XMLExecuteXPath ("doc.xml", "/root/result")
Un super tutorial XPath ici : http://www.w3schools.com/xpath/default.asp
Bob.
utiliser XPath j'ai déja répondu à ce genre de question ici :
http://forum.pcsoft.fr/post.awp?id994&forum=pcsoft.fr.windev&from%0&gmt=P0100
et ici :
http://forum.pcsoft.fr/post.awp?id321&forum=pcsoft.fr.windev&from 0&gmt=P0100
un autre tuto en french ici :
http://jerome.developpez.com/xmlxsl/xpath/
--
Cordialement JeAn-PhI