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

XML Discussion :

[TinyXML] Comment gérer /> ?


Sujet :

XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [TinyXML] Comment gérer /> ?
    Bonjour

    Je viens de découvrir TinyXML et il y a un problème que je n'arrive pas à résoudre dans l'extraction des données.
    L'extraction des données du premier TreeKit fonctionne bien en revanche la console plante lors de son deuxième passage dans le "while(ptree)"

    Voici mon fichier XML:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <TreeKit id="mama">
    <base children="1" cousins="10" LifeTime="40" />
    <tree money="2000" />
    </TreeKit>
    - <TreeKit id="papa">
    <base children="1" cousins="12" LifeTime="30" />
    <tree money="3500" />
    </TreeKit>

    Voici une partie de mon code :
    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
    32
    33
    34
    TiXmlElement *elem=hdl.FirstChildElement().FirstChildElement().Element();
     
    if(!elem)
    {
           cerr << "le noeud à atteindre n'existe pas" << endl;
           system("PAUSE");
           menu();
    }
    while(elem)
    {               
            //Extraction de la première lettre du nom
            name = *elem->Attribute ("id");
            printf("\tname id = %c \n",name);
     
            TiXmlElement *ptree=hdl.FirstChildElement().FirstChildElement().FirstChildElement().Element();
     
             while(ptree)
             {
     
     
                        ptree->QueryIntAttribute ("children", children);               
                        ptree->QueryIntAttribute ("cousins", cousins);     
                        ptree->QueryIntAttribute ("LifeTime", LifeTime);                                         
     
                         //Présence d'un /> dans le xml
                         ptree = ptree->NextSiblingElement();
     
                         ptree->QueryIntAttribute ("money", money);
     
             }
     
             //On passe au tree suivant
             elem = elem->NextSiblingElement(); 
    }
    Je pense que le problème vient du "ptree = ptree->NextSiblingElement();" mais sans cette ligne je ne peux pas atteindre "money"
    Quelqu'un pourrait il m'éclairer svp ?


    Merci

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Points : 1 543
    Points
    1 543
    Par défaut
    Salut,

    A quoi sert le "while( ptree )" ? C'est pour faire une boucle sur quoi ?

    MAT.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Très bonne question !

    En fait à l'origine, je pensais qu'il allait pouvoir résoudre mon problème de récupérer les données de "papa" en dehors du name

    N'y arrivant toujours pas je l'ai retiré puis remplacé :
    TiXmlElement *ptree=hdl.FirstChildElement().FirstChildElement().FirstChildElement().Element();
    par :
    TiXmlElement *ptree;
    ptree= elem->FirstChildElement();
    ce qui donne :

    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
    TiXmlElement *elem=hdl.FirstChildElement().FirstChildElement().Element();
     
    if(!elem)
    {
           cerr << "le noeud à atteindre n'existe pas" << endl;
           system("PAUSE");
           menu();
    }
    while(elem)
    {               
            //Extraction de la première lettre du nom
            name = *elem->Attribute ("id");
            printf("\tname id = %c \n",name);
     
             TiXmlElement *ptree;
             ptree= elem->FirstChildElement();
     
             ptree->QueryIntAttribute ("children", children);               
             ptree->QueryIntAttribute ("cousins", cousins);     
             ptree->QueryIntAttribute ("LifeTime", LifeTime);                                         
     
            //Présence d'un /> dans le xml
            ptree = ptree->NextSiblingElement();
     
            ptree->QueryIntAttribute ("money", money);
     
            //On passe au tree suivant
            elem = elem->NextSiblingElement(); 
    }
    Et ça FONCTIONNE !!
    (même si je ne vois pas bien la différence^^)

    Merci beaucoup MAT

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment gérer plusieurs langues ?
    Par InterSQL dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 27/02/2004, 16h12
  2. Comment gérer plusieurs icones dans son exécutable ?
    Par declencher dans le forum Langage
    Réponses: 5
    Dernier message: 15/10/2003, 10h49
  3. Comment gérer ma carte réseau en ASM
    Par will1974 dans le forum Assembleur
    Réponses: 6
    Dernier message: 23/09/2003, 17h08
  4. Comment gérer la touche echap ?
    Par Adrael dans le forum C
    Réponses: 28
    Dernier message: 11/07/2003, 13h15
  5. Comment gérer les espaces blancs?
    Par Lambo dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/05/2003, 09h44

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