OVH Cloud OVH Cloud

Parseur XML

2 réponses
Avatar
Doomsday
Bonjour,

J'aimerais r=E9cup=E9rer 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=E9n=E8re, je peux =E9ventuellement changer sa structure
pour l'adapter aux facilit=E9s de Windev.
Voil=E0... Je sais pas si mon code Windev est compr=E9hensible, mais
j'essaie tout bonnement de parcourir le fichier XML =E0 la conqu=EAte des
donn=E9es qui se trouvent =E0 l'int=E9rieur. Actuellement, voil=E0 ce que
j'ai :

// R=E9cup=E8re la structure du header
XMLDocument("doc.xml", ..)
XMLRecherche("doc.xml", "header", XMLBalise)
XMLPremier("doc.xml")
XMLRecherche("doc.xml", Null, XMLBalise+XMLSousEl=E9ment)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") =3D Faux
headers +=3D XMLNomEl=E9ment("doc.xml") + TAB // je stocke le nom des
balises
XMLSuivant("doc.xml")
FIN

// remets =E0 z=E9ro
XMLAnnuleRecherche("doc.xml")
XMLRacine("doc.xml")

// cherche les r=E9sultats
XMLRecherche("doc.xml", Null,XMLBalise)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") =3D Faux
SI XMLNomEl=E9ment("doc.xml") =3D "result" ALORS

// essaie d=E9sesp=E9rement de rechercher toutes les balises
"col"
XMLRecherche("doc.xml", "col", XMLBalise+XMLSousEl=E9ment)
XMLPremier("doc.xml")
TANTQUE XMLEnDehors("doc.xml") =3D Faux
str +=3D XMLDonn=E9e("doc.xml") // essaie de r=E9cup=E9rer
le contenu
XMLSuivant("doc.xml")
FIN

FIN

XMLRecherche("doc.xml",Null,XMLBalise+XMLContinue)
XMLPremier("doc.xml")
FIN


La r=E9cup=E9ration du header se passe bien, mais il y a un probl=E8me
quand je rentre dans la grosse boucle, je n'ai pas encore r=E9ussi =E0
r=E9cup=E9rer le contenu d'une sous balise (ici <col>).

Merci pour l'aide!

2 réponses

Avatar
bob
On Wed, 06 Dec 2006 06:36:09 -0800, Doomsday wrote:

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>



Petite question, est-ce qu'il peut y avoir plusieur groupes de balises
<result> ?


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>).



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.
Avatar
JeAn-PhI
Doomsday a formulé ce mercredi :
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!



utiliser XPath j'ai déja répondu à ce genre de question ici :
http://forum.pcsoft.fr/post.awp?id˜994&forum=pcsoft.fr.windev&from%0&gmt=P0100
et ici :
http://forum.pcsoft.fr/post.awp?id™321&forum=pcsoft.fr.windev&from 0&gmt=P0100

un autre tuto en french ici :
http://jerome.developpez.com/xmlxsl/xpath/

--
Cordialement JeAn-PhI