soit le fichier XML suivant <?xml version="1.0" encoding="iso-8859-1"?> <brief id="" dateBrief="01/01/2004" gInterId="1112"> <quizz> <codeQz>QUIZZ1</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 1?</libQz> <repQz>ma réponse 1</repQz> </quizz> <quizz> <codeQz>QUIZZ2</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 2?</libQz> <repQz>ma réponse 2</repQz> </quizz> <quizz> <codeQz>QUIZZ3</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 3?</libQz> <repQz>ma réponse 3</repQz> </quizz> etc .... </brief>
Comment récupérer repQz quand CodeQz=QUIZZ2 en fait l'équivalent de SELECT repQZ from monXml where CodeQz='QUIZZ2'
Ca me prends la tête ces xmlrecherche et j'espère que c'est performant.
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Roumegou
Tanguy a pensé très fort :
Roumegou a dit :
soit le fichier XML suivant <?xml version="1.0" encoding="iso-8859-1"?> <brief id="" dateBrief="01/01/2004" gInterId="1112"> <quizz> <codeQz>QUIZZ1</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 1?</libQz> <repQz>ma réponse 1</repQz> </quizz> <quizz> <codeQz>QUIZZ2</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 2?</libQz> <repQz>ma réponse 2</repQz> </quizz> <quizz> <codeQz>QUIZZ3</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 3?</libQz> <repQz>ma réponse 3</repQz> </quizz> etc .... </brief>
Comment récupérer repQz quand CodeQz=QUIZZ2 en fait l'équivalent de SELECT repQZ from monXml where CodeQz='QUIZZ2'
Ca me prends la tête ces xmlrecherche et j'espère que c'est performant.
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
ça c'est vraiment vache comme réponse ;o) Mais pour l'instant moi je ne veux pas passer à la 8 :'(
Et c'est quoi les requêtes Xpath ?
et si qq'un a quand meme le bout de code... pour l'instant je suis sur un truc du genre XMLRacine(xmlCh) XMLRecherche(xmlCh,"QUIZZ2",XMLElément,XMLExact) TANTQUE XMLTrouve(xmlCh) ET XMLNomElément(xmlCh)="codeQz" XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
XMLSuivant(xmlCh) FIN XMLAnnuleRecherche(xmlCh) et il me reste dans la boucle à me positionner sur la balise repQz du meme niveau avec un truc comme XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
Bon je vais essayer de tester cela.
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Tanguy a pensé très fort :
Roumegou a dit :
soit le fichier XML suivant
<?xml version="1.0" encoding="iso-8859-1"?>
<brief id="" dateBrief="01/01/2004" gInterId="1112">
<quizz>
<codeQz>QUIZZ1</codeQz>
<nivoQz>1</nivoQz>
<libQz>texte de ma question 1?</libQz>
<repQz>ma réponse 1</repQz>
</quizz>
<quizz>
<codeQz>QUIZZ2</codeQz>
<nivoQz>1</nivoQz>
<libQz>texte de ma question 2?</libQz>
<repQz>ma réponse 2</repQz>
</quizz>
<quizz>
<codeQz>QUIZZ3</codeQz>
<nivoQz>1</nivoQz>
<libQz>texte de ma question 3?</libQz>
<repQz>ma réponse 3</repQz>
</quizz>
etc ....
</brief>
Comment récupérer repQz quand CodeQz=QUIZZ2 en fait l'équivalent de
SELECT repQZ from monXml where CodeQz='QUIZZ2'
Ca me prends la tête ces xmlrecherche et j'espère que c'est performant.
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath
facilitent énormément le travail...
ça c'est vraiment vache comme réponse ;o)
Mais pour l'instant moi je ne veux pas passer à la 8 :'(
Et c'est quoi les requêtes Xpath ?
et si qq'un a quand meme le bout de code...
pour l'instant je suis sur un truc du genre
XMLRacine(xmlCh)
XMLRecherche(xmlCh,"QUIZZ2",XMLElément,XMLExact)
TANTQUE XMLTrouve(xmlCh) ET XMLNomElément(xmlCh)="codeQz"
XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
XMLSuivant(xmlCh)
FIN
XMLAnnuleRecherche(xmlCh)
et il me reste dans la boucle à me positionner sur la balise repQz du
meme niveau avec un truc comme
XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
Bon je vais essayer de tester cela.
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
soit le fichier XML suivant <?xml version="1.0" encoding="iso-8859-1"?> <brief id="" dateBrief="01/01/2004" gInterId="1112"> <quizz> <codeQz>QUIZZ1</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 1?</libQz> <repQz>ma réponse 1</repQz> </quizz> <quizz> <codeQz>QUIZZ2</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 2?</libQz> <repQz>ma réponse 2</repQz> </quizz> <quizz> <codeQz>QUIZZ3</codeQz> <nivoQz>1</nivoQz> <libQz>texte de ma question 3?</libQz> <repQz>ma réponse 3</repQz> </quizz> etc .... </brief>
Comment récupérer repQz quand CodeQz=QUIZZ2 en fait l'équivalent de SELECT repQZ from monXml where CodeQz='QUIZZ2'
Ca me prends la tête ces xmlrecherche et j'espère que c'est performant.
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
ça c'est vraiment vache comme réponse ;o) Mais pour l'instant moi je ne veux pas passer à la 8 :'(
Et c'est quoi les requêtes Xpath ?
et si qq'un a quand meme le bout de code... pour l'instant je suis sur un truc du genre XMLRacine(xmlCh) XMLRecherche(xmlCh,"QUIZZ2",XMLElément,XMLExact) TANTQUE XMLTrouve(xmlCh) ET XMLNomElément(xmlCh)="codeQz" XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
XMLSuivant(xmlCh) FIN XMLAnnuleRecherche(xmlCh) et il me reste dans la boucle à me positionner sur la balise repQz du meme niveau avec un truc comme XMLRecherche(xmlCh,"repQz",XMLBalise,XMLNiveauCourant)
Bon je vais essayer de tester cela.
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou
Roumegou a exposé le 07/06/2004 :
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne semble pas exister non plus.
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou a exposé le 07/06/2004 :
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath
facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne
semble pas exister non plus.
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne semble pas exister non plus.
oui, bon apres il existe certainement un moyen d'utiliser le XPath avec un OLE Microsoft, mais je ne sais pas trop comment faire.
en fait ces requetes xpath sont pas mal du tout, ce n'est pas du SQL, plutot un truc du genre "tag1/*" pour tous les sous-éléments du tag 1.
C'est assez poussé comme syntaxe, je ne connais pas encore tres bien...
-- Ceci est une signature automatique de MesNews. Site : http://mesnews.no-ip.com
Roumegou
Roumegou avait écrit le 07/06/2004 :
Roumegou a exposé le 07/06/2004 :
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne semble pas exister non plus.
C'est galère ces fonctions XML !!!!Je ne sais pas si les fonctions de parser sont plus évoluées dans d'autres langages mais quand on présente le xml comme le standard de dialogue entre applications, ce serait bien de faire plus simple. Enfin, je vous livre mon code. Principe, un flux XML contient le texte de questions comme les réponses. Astuce : dans le texte de questions, on peut utiliser des variables de substitutions en les entourant par des []; d'où mon besoin de le retouver dans le flux. Par ex : un texte "Comment allez vous [DENOMIN]?" ira chercher une balise <codeQz>DENOMIN</codeQz> et sur le meme parent <repQz>Yau d'poêle</repQz> pour faire "Comment allez vous Yau d'poêle ?"
<Aparté> Bon, que ceux qui disent que c'est comment va tu yau d'poêle qui est drôle : 1 - ne comprennent pas mon humour désopillant 2 - on a pas élevé les cochons ensemble ... </Aparté>
Bon plus sérieusement, voici le code mais j'aurais préféré plus simple. asubstituer est chaîne XMLCh est chaîne=zonxml zlibQz,zrepQz sont des chaînes newval est chaîne XMLDocument(docxml, zonxml) //Création du document XML
//Le document est bien au format XML ? SI PAS ErreurDétectée ALORS Résultat est une chaîne i est un entier = 1 Résultat = XMLExtraitChaîne(XMLCh, "quizz", i) TANTQUE Résultat <> ""
zlibQz=XMLVersTexte(XMLExtraitChaîne(Résultat,"libQz")) asubstituer= ExtraitEntre(zlibQz,"[","]") TANTQUE asubstituer<>"" newval="?" XMLRacine(docxml) XMLRecherche(docxml,asubstituer,XMLValeur,XMLExact) TANTQUE XMLTrouve(docxml) SI XMLNomElément(docxml)="codeQz" ALORS // c'est le bon, on se positionne sur la balise repQz, on récupère la donnée et on sort // on part du principe qu'il y a forcément une balise repQZ XMLRecherche(docxml,"repQz",XMLBalise,XMLNiveauCourant) SI XMLTrouve(docxml) ALORS newval=XMLDonnée(docxml) SORTIR FIN XMLSuivant(docxml) // on passe au suivant FIN XMLAnnuleRecherche(docxml) zlibQz=Remplace(zlibQz,"["+asubstituer+"]",newval) asubstituer= ExtraitEntre(zlibQz,"[","]") FIN i = i + 1 Résultat = XMLExtraitChaîne(XMLCh, "quizz", i) FIN i=1
SINON
Erreur("Ce fichier n'est pas au format XML"+RC+ErreurInfo(errComplet)+RC+XMLCh)
FIN
XMLTermine(docxml)
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou avait écrit le 07/06/2004 :
Roumegou a exposé le 07/06/2004 :
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath
facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne semble pas
exister non plus.
C'est galère ces fonctions XML !!!!Je ne sais pas si les fonctions de
parser sont plus évoluées dans d'autres langages mais quand on présente
le xml comme le standard de dialogue entre applications, ce serait bien
de faire plus simple.
Enfin, je vous livre mon code. Principe, un flux XML contient le texte
de questions comme les réponses. Astuce : dans le texte de questions,
on peut utiliser des variables de substitutions en les entourant par
des []; d'où mon besoin de le retouver dans le flux.
Par ex : un texte "Comment allez vous [DENOMIN]?" ira chercher une
balise <codeQz>DENOMIN</codeQz> et sur le meme parent <repQz>Yau
d'poêle</repQz> pour faire "Comment allez vous Yau d'poêle ?"
<Aparté>
Bon, que ceux qui disent que c'est comment va tu yau d'poêle qui est
drôle :
1 - ne comprennent pas mon humour désopillant
2 - on a pas élevé les cochons ensemble ...
</Aparté>
Bon plus sérieusement, voici le code mais j'aurais préféré plus simple.
asubstituer est chaîne
XMLCh est chaîne=zonxml
zlibQz,zrepQz sont des chaînes
newval est chaîne
XMLDocument(docxml, zonxml) //Création du document XML
//Le document est bien au format XML ?
SI PAS ErreurDétectée ALORS
Résultat est une chaîne
i est un entier = 1
Résultat = XMLExtraitChaîne(XMLCh, "quizz", i)
TANTQUE Résultat <> ""
zlibQz=XMLVersTexte(XMLExtraitChaîne(Résultat,"libQz"))
asubstituer= ExtraitEntre(zlibQz,"[","]")
TANTQUE asubstituer<>""
newval="?"
XMLRacine(docxml)
XMLRecherche(docxml,asubstituer,XMLValeur,XMLExact)
TANTQUE XMLTrouve(docxml)
SI XMLNomElément(docxml)="codeQz" ALORS
// c'est le bon, on se positionne sur la balise repQz, on récupère
la donnée et on sort
// on part du principe qu'il y a forcément une balise repQZ
XMLRecherche(docxml,"repQz",XMLBalise,XMLNiveauCourant)
SI XMLTrouve(docxml) ALORS newval=XMLDonnée(docxml)
SORTIR
FIN
XMLSuivant(docxml) // on passe au suivant
FIN
XMLAnnuleRecherche(docxml)
zlibQz=Remplace(zlibQz,"["+asubstituer+"]",newval)
asubstituer= ExtraitEntre(zlibQz,"[","]")
FIN
i = i + 1
Résultat = XMLExtraitChaîne(XMLCh, "quizz", i)
FIN
i=1
SINON
Erreur("Ce fichier n'est pas au format
XML"+RC+ErreurInfo(errComplet)+RC+XMLCh)
FIN
XMLTermine(docxml)
--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Effectivement, c'est embetant en WD7.5. En Windev 8, les requetes XPath facilitent énormément le travail...
et puis de toute façon, c'est pour utiliser en Webdev 7 et cela ne semble pas exister non plus.
C'est galère ces fonctions XML !!!!Je ne sais pas si les fonctions de parser sont plus évoluées dans d'autres langages mais quand on présente le xml comme le standard de dialogue entre applications, ce serait bien de faire plus simple. Enfin, je vous livre mon code. Principe, un flux XML contient le texte de questions comme les réponses. Astuce : dans le texte de questions, on peut utiliser des variables de substitutions en les entourant par des []; d'où mon besoin de le retouver dans le flux. Par ex : un texte "Comment allez vous [DENOMIN]?" ira chercher une balise <codeQz>DENOMIN</codeQz> et sur le meme parent <repQz>Yau d'poêle</repQz> pour faire "Comment allez vous Yau d'poêle ?"
<Aparté> Bon, que ceux qui disent que c'est comment va tu yau d'poêle qui est drôle : 1 - ne comprennent pas mon humour désopillant 2 - on a pas élevé les cochons ensemble ... </Aparté>
Bon plus sérieusement, voici le code mais j'aurais préféré plus simple. asubstituer est chaîne XMLCh est chaîne=zonxml zlibQz,zrepQz sont des chaînes newval est chaîne XMLDocument(docxml, zonxml) //Création du document XML
//Le document est bien au format XML ? SI PAS ErreurDétectée ALORS Résultat est une chaîne i est un entier = 1 Résultat = XMLExtraitChaîne(XMLCh, "quizz", i) TANTQUE Résultat <> ""
zlibQz=XMLVersTexte(XMLExtraitChaîne(Résultat,"libQz")) asubstituer= ExtraitEntre(zlibQz,"[","]") TANTQUE asubstituer<>"" newval="?" XMLRacine(docxml) XMLRecherche(docxml,asubstituer,XMLValeur,XMLExact) TANTQUE XMLTrouve(docxml) SI XMLNomElément(docxml)="codeQz" ALORS // c'est le bon, on se positionne sur la balise repQz, on récupère la donnée et on sort // on part du principe qu'il y a forcément une balise repQZ XMLRecherche(docxml,"repQz",XMLBalise,XMLNiveauCourant) SI XMLTrouve(docxml) ALORS newval=XMLDonnée(docxml) SORTIR FIN XMLSuivant(docxml) // on passe au suivant FIN XMLAnnuleRecherche(docxml) zlibQz=Remplace(zlibQz,"["+asubstituer+"]",newval) asubstituer= ExtraitEntre(zlibQz,"[","]") FIN i = i + 1 Résultat = XMLExtraitChaîne(XMLCh, "quizz", i) FIN i=1
SINON
Erreur("Ce fichier n'est pas au format XML"+RC+ErreurInfo(errComplet)+RC+XMLCh)
FIN
XMLTermine(docxml)
-- Eric Roumégou http://cerbermail.com/?TSoulBerPA (cliquez sur le lien ci-dessus pour me contacter en privé)