je veux lire tous les enregistrements de cette table et prendre
certaines balises. D'où le code
docXML="DocXML"
//Création du document XML
XMLDocument(docXML, xmlCh)
//Le document est bien au format XML ?
SI PAS ErreurDétectée ALORS
eof=Faux
XMLPremier(docXML)
XMLSuivant(docXML)
XMLFils(docXML)
TANTQUE PAS eof ET XMLNomElément(docXML)="MATABLE"
XMLFils(docXML) // Descend dans le niveau MATABLE
TableAjoute(Table1)
pI=TableOccurrence(Table1)
XMLRecherche(docXML,"CODE_CLIENT",XMLElément+XMLNiveauCourant);SI
XMLTrouve("DocXML") ALORS Table1.CODE_CLIENT[pI]= XMLDonnée(docXML)
XMLRecherche(docXML,"NOM",XMLElément+XMLNiveauCourant);SI
XMLTrouve("DocXML") ALORS Table1.NOM[pI]= XMLDonnée(docXML)
XMLRecherche(docXML,"EMPLOI",XMLElément+XMLNiveauCourant);SI
XMLParent(docXML) //remonte au niveau enreg
XMLSuivant(docXML) // passe au tuple suivant
SI XMLEnDehors(docXML) ALORS eof=Vrai
FIN //tantque pas eof
SINON
Erreur("Ce fichier n'est pas au format XML"+RC+errInfo)
FIN
XMLTermine(docXML)
Ok cela fonctionne mais seulement parce que mes balises CODE_CLIENT,
NOM, EMPLOI sont dans cet ordre
Si je recherche CODE_CLIENT, EMPLOI, NOM; la recherche NOM échouera.
Donc comment faire pour rechercher dans toutes les balises de MATABLE,
sans devoir respecter un ordre que je ne suis pas sensé connaitre ?
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
je veux lire tous les enregistrements de cette table et prendre certaines balises. D'où le code
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh) //Le document est bien au format XML ? SI PAS ErreurDétectée ALORS eofúux XMLPremier(docXML) XMLSuivant(docXML) XMLFils(docXML) TANTQUE PAS eof ET XMLNomElément(docXML)="MATABLE"
XMLFils(docXML) // Descend dans le niveau MATABLE
TableAjoute(Table1) pI=TableOccurrence(Table1)
XMLRecherche(docXML,"CODE_CLIENT",XMLElément+XMLNiveauCourant);SI XMLTrouve("DocXML") ALORS Table1.CODE_CLIENT[pI]= XMLDonnée(docXML) XMLRecherche(docXML,"NOM",XMLElément+XMLNiveauCourant);SI XMLTrouve("DocXML") ALORS Table1.NOM[pI]= XMLDonnée(docXML) XMLRecherche(docXML,"EMPLOI",XMLElément+XMLNiveauCourant);SI XMLParent(docXML) //remonte au niveau enreg XMLSuivant(docXML) // passe au tuple suivant SI XMLEnDehors(docXML) ALORS eof=Vrai
FIN //tantque pas eof SINON Erreur("Ce fichier n'est pas au format XML"+RC+errInfo) FIN
XMLTermine(docXML)
Ok cela fonctionne mais seulement parce que mes balises CODE_CLIENT, NOM, EMPLOI sont dans cet ordre Si je recherche CODE_CLIENT, EMPLOI, NOM; la recherche NOM échouera.
Donc comment faire pour rechercher dans toutes les balises de MATABLE, sans devoir respecter un ordre que je ne suis pas sensé connaitre ?
moi je pratique de la sorte :
szReqXPath est une chaîne
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN XMLFils(docXML) TANTQUE PAS XMLEnDehors(docXML) SELON XMLNomElément(docXML) CAS "CODE_CLIENT" : CAS "NOM" : CAS "EMPLOI" : FIN XMLSuivant(docXML) FIN FIN
-- Cordialement JeAn-PhI
Roumégou Eric avait prétendu :
Bonjour,
très souvent je n'utilise pas les fn XML natives pour lire un xml mais là
j'aimerais comprendre la technique.
Partons d'une table exportée au fmt XML depuis WDMAP et que je ne veuille pas
intégrer ce code xml comme une table dans l'analyse.
donc ce xml
je veux lire tous les enregistrements de cette table et prendre certaines
balises. D'où le code
docXML="DocXML"
//Création du document XML
XMLDocument(docXML, xmlCh)
//Le document est bien au format XML ?
SI PAS ErreurDétectée ALORS
eofúux
XMLPremier(docXML)
XMLSuivant(docXML)
XMLFils(docXML)
TANTQUE PAS eof ET XMLNomElément(docXML)="MATABLE"
XMLFils(docXML) // Descend dans le niveau MATABLE
TableAjoute(Table1)
pI=TableOccurrence(Table1)
XMLRecherche(docXML,"CODE_CLIENT",XMLElément+XMLNiveauCourant);SI
XMLTrouve("DocXML") ALORS Table1.CODE_CLIENT[pI]= XMLDonnée(docXML)
XMLRecherche(docXML,"NOM",XMLElément+XMLNiveauCourant);SI
XMLTrouve("DocXML") ALORS Table1.NOM[pI]= XMLDonnée(docXML)
XMLRecherche(docXML,"EMPLOI",XMLElément+XMLNiveauCourant);SI
XMLParent(docXML) //remonte au niveau enreg
XMLSuivant(docXML) // passe au tuple suivant
SI XMLEnDehors(docXML) ALORS eof=Vrai
FIN //tantque pas eof
SINON
Erreur("Ce fichier n'est pas au format XML"+RC+errInfo)
FIN
XMLTermine(docXML)
Ok cela fonctionne mais seulement parce que mes balises CODE_CLIENT, NOM,
EMPLOI sont dans cet ordre
Si je recherche CODE_CLIENT, EMPLOI, NOM; la recherche NOM échouera.
Donc comment faire pour rechercher dans toutes les balises de MATABLE, sans
devoir respecter un ordre que je ne suis pas sensé connaitre ?
moi je pratique de la sorte :
szReqXPath est une chaîne
docXML="DocXML"
//Création du document XML
XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)"
SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS
Erreur("La requête XPath <"+szReqXPath+"> a échoué")
RETOUR
FIN
lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG
szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]"
SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS
Erreur("La requête XPath <"+szReqXPath+"> a échoué")
RETOUR
FIN
XMLFils(docXML)
TANTQUE PAS XMLEnDehors(docXML)
SELON XMLNomElément(docXML)
CAS "CODE_CLIENT" :
CAS "NOM" :
CAS "EMPLOI" :
FIN
XMLSuivant(docXML)
FIN
FIN
je veux lire tous les enregistrements de cette table et prendre certaines balises. D'où le code
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh) //Le document est bien au format XML ? SI PAS ErreurDétectée ALORS eofúux XMLPremier(docXML) XMLSuivant(docXML) XMLFils(docXML) TANTQUE PAS eof ET XMLNomElément(docXML)="MATABLE"
XMLFils(docXML) // Descend dans le niveau MATABLE
TableAjoute(Table1) pI=TableOccurrence(Table1)
XMLRecherche(docXML,"CODE_CLIENT",XMLElément+XMLNiveauCourant);SI XMLTrouve("DocXML") ALORS Table1.CODE_CLIENT[pI]= XMLDonnée(docXML) XMLRecherche(docXML,"NOM",XMLElément+XMLNiveauCourant);SI XMLTrouve("DocXML") ALORS Table1.NOM[pI]= XMLDonnée(docXML) XMLRecherche(docXML,"EMPLOI",XMLElément+XMLNiveauCourant);SI XMLParent(docXML) //remonte au niveau enreg XMLSuivant(docXML) // passe au tuple suivant SI XMLEnDehors(docXML) ALORS eof=Vrai
FIN //tantque pas eof SINON Erreur("Ce fichier n'est pas au format XML"+RC+errInfo) FIN
XMLTermine(docXML)
Ok cela fonctionne mais seulement parce que mes balises CODE_CLIENT, NOM, EMPLOI sont dans cet ordre Si je recherche CODE_CLIENT, EMPLOI, NOM; la recherche NOM échouera.
Donc comment faire pour rechercher dans toutes les balises de MATABLE, sans devoir respecter un ordre que je ne suis pas sensé connaitre ?
moi je pratique de la sorte :
szReqXPath est une chaîne
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN XMLFils(docXML) TANTQUE PAS XMLEnDehors(docXML) SELON XMLNomElément(docXML) CAS "CODE_CLIENT" : CAS "NOM" : CAS "EMPLOI" : FIN XMLSuivant(docXML) FIN FIN
-- Cordialement JeAn-PhI
Roumégou Eric
JeAn-PhI a formulé la demande :
Roumégou Eric avait prétendu :
moi je pratique de la sorte :
szReqXPath est une chaîne
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN XMLFils(docXML) TANTQUE PAS XMLEnDehors(docXML) SELON XMLNomElément(docXML) CAS "CODE_CLIENT" : CAS "NOM" : CAS "EMPLOI" : FIN XMLSuivant(docXML) FIN FIN
Bon sang mais c'est bien sûr !
oui merci j'aime mieux comme ça je vais adopter !
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)
JeAn-PhI a formulé la demande :
Roumégou Eric avait prétendu :
moi je pratique de la sorte :
szReqXPath est une chaîne
docXML="DocXML"
//Création du document XML
XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)"
SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS
Erreur("La requête XPath <"+szReqXPath+"> a échoué")
RETOUR
FIN
lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG
szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]"
SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS
Erreur("La requête XPath <"+szReqXPath+"> a échoué")
RETOUR
FIN
XMLFils(docXML)
TANTQUE PAS XMLEnDehors(docXML)
SELON XMLNomElément(docXML)
CAS "CODE_CLIENT" :
CAS "NOM" :
CAS "EMPLOI" :
FIN
XMLSuivant(docXML)
FIN
FIN
Bon sang mais c'est bien sûr !
oui merci j'aime mieux comme ça
je vais adopter !
--
Eric Roumégou
Webmaster des wtablettes
http://cerbermail.com/?qE7t4Qvilo
(cliquez sur le lien ci-dessus pour me contacter en privé)
docXML="DocXML" //Création du document XML XMLDocument(docXML, xmlCh)
szReqXPath = "count(/HF_DOCUMENT/MATABLE)" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN lNbTAG est entier = XMLRésultat(docXML)
POUR i = 1 _A_ lNbTAG szReqXPath = "/HF_DOCUMENT/MATABLE["+i+"]" SI PAS XMLExécuteXPath(docXML,szReqXPath) ALORS Erreur("La requête XPath <"+szReqXPath+"> a échoué") RETOUR FIN XMLFils(docXML) TANTQUE PAS XMLEnDehors(docXML) SELON XMLNomElément(docXML) CAS "CODE_CLIENT" : CAS "NOM" : CAS "EMPLOI" : FIN XMLSuivant(docXML) FIN FIN
Bon sang mais c'est bien sûr !
oui merci j'aime mieux comme ça je vais adopter !
-- Eric Roumégou Webmaster des wtablettes http://cerbermail.com/?qE7t4Qvilo (cliquez sur le lien ci-dessus pour me contacter en privé)