Bonjour,
J'aurais besoin d'un indice d'utilisation des fonctions XML de WinDev qui me paraissent peu adéquates à première vue.
Je m'explique, en prenant cet exemple:
En .Net, je peux faire une sorte de:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Exemple de fichier XML: <root> <element1 id="6"> <element2 id="N"> </element2> </element1> </root>
En WinDev, on dirait que je ne peux pas savoir à quel niveau je me situe? Je m'explique: je ne semble pas être capable d'avoir le nombre d'éléments enfants, ni d'avoir un moyen de savoir à quel niveau dans l'arborescence je me situe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach(XmlNode objNode in Root.ChildNodes) //Récupérer tous les element1 { //Pour chaque element1 foreach(XmlNode objSousNode in objNode.ChildNodes) //Récupérer tous les element2 { //Pour chaque element2 } }
On dirait qu'aucune fonction du style XmlSuivant n'est trouvable pour chercher les "frères" uniquement (c'est à dire les noeuds du même niveau).
La seule solution qui semble possible c'est de spammer des XMLExécutePath pour réclamer ces informations, mais les XMLExécutePath sont incompatibles exécutable Java et sont probablement lourds au niveau temps d'exécution.
Et les requêtes XPath ne semblent pas être utilisables dans le cas de requêtes imbriquées (à moins que ça soit possible en utilisant les fonctions de sauvegarde du contexte (XML[Retour|Sauve]Position)?
Je suis pas mal déçu de WinDev là dessus... est-ce que je manque une solution importante ou bien j'ai raison?
Mon fix rapide serait de modifier le programme qui génère le code XML d'origine afin qu'il indique un saut dans l'arborescence (on remonte d'un niveau (parent)) avec une balise du style <break />. Mais bon ça n'a rien de propre dans mon code et un simple oubli de cette balise rendra mon code instable...
Si vous avez une suggestion n'hésitez pas.
Partager