IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

Comment utiliser XML de façon hierarchique comme en .Net?


Sujet :

WinDev

  1. #1
    Membre actif Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Points : 221
    Points
    221
    Par défaut Comment utiliser XML de façon hierarchique comme en .Net?
    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:
    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 .Net, je peux faire une sorte de:
    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
         }
    }
    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

    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.

  2. #2
    Membre actif Avatar de MicaelFelix
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    254
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 254
    Points : 221
    Points
    221
    Par défaut
    Hum... il semble que la chose la plus proche de .Net soit celle-ci (tirée de l'aide):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    texteXML est une chaîne = [
    <?xml version="1.0"?>
    <!DOCTYPE PLAY SYSTEM "play.dtd">
    <PLAY>
    <TITLE>The Tragedy of Romeo and Juliet</TITLE>
    <ACT><TITLE>ACT I</TITLE>
    <PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
    <SCENE><TITLE>SCENE I. Verona. A public place.</TITLE></SCENE>
    </ACT>
    <ACT><TITLE>ACT II</TITLE>
     
    <PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
    <SCENE><TITLE>SCENE I. A lane by the wall of Capulet's orchard.</TITLE></SCENE>
    </ACT>
    <ACT><TITLE>ACT III</TITLE>
     
    <PROLOGUE><TITLE>PROLOGUE</TITLE></PROLOGUE>
    <SCENE><TITLE>SCENE I. A public place.</TITLE></SCENE>
    </ACT>
    </PLAY>
    ]
     
    // Chargement d'un document XML
    RomeoEtJuliette est un XMLDocument
    RomeoEtJuliette = XMLOuvre(texteXML,depuisChaîne)
     
    // Affichage du titre des actes
    Acte est un xmlNoeud
    POUR TOUT Acte DE RomeoEtJuliette.PLAY SUR ACT
    Trace(Acte.TITLE)
    FIN
    Je n'ai aucune idée de si l'imbrication de POUR TOUT en utilisation avec des XMLNoeud marche parfaitement, mais le fait que cela ne soit pas compatible Java me refroidit un peu pour réécrire mon code... je sens que je vais garder mon fix temporaire "<break />" jusqu'à nouvel ordre à moins que quelqu'un ait quelque chose de mieux à me suggérer.

  3. #3
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Bonjour,

    Dépendant de ta version, l’utilisation des xmlDocument et xmlNoeud est la plus simple. Sinon, les fonctions XMLFils, XMLSuivant et XMLParent permettent de faire ce genre de parcours.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2015, 14h09
  2. Réponses: 3
    Dernier message: 19/01/2011, 14h36
  3. Comment utiliser miso.exe depuis une application vb.net?
    Par tbdarkspirit dans le forum VB.NET
    Réponses: 1
    Dernier message: 29/04/2007, 14h06
  4. Comment utiliser du C++/CLI dans du VB.Net ?
    Par onur dans le forum C++/CLI
    Réponses: 3
    Dernier message: 19/10/2006, 11h42
  5. Réponses: 13
    Dernier message: 25/04/2006, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo