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 :

Comment parcourir les attributs d'un élément ?


Sujet :

XML

  1. #1
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut Comment parcourir les attributs d'un élément ?
    Bonjour,
    Contexte : Je veux pouvoir récupérer des variables que l'utilisateur aura lui même écrit dans le fichier xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!--Date of Export = -->
    <SYSTEM NAME="Test Import xml" SOLVE_METHOD="2" COMMENT="Test d'importation de données">
        <VARIABLES>
    	b="Laurent"
    	c="15"
    	d="17.3"
        </VARIABLES>
    </SYSTEM>
    Voilà, b,c,d sont définies par l'utilisateur. Je ne connais pas le nom des attributs donc je ne peux pas utiliser Query...
    Le nombre de ces variables est inconnu aussi.

    Ce qu'il me manque c'est une fonction qui me permette de parcourir 1 à 1 tous les attributs d'un même élément pour récupérer son nom et sa valeur.
    Comment faire ? Je suis ouvert à toutes propositions, même si je dois modifier la structure des infos.

    J'utilise TinyXML en C++/CodeBlocks.

    Merci d'avance pour vos réponses.

  2. #2
    Membre actif
    Inscrit en
    Juin 2002
    Messages
    409
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 409
    Points : 234
    Points
    234
    Par défaut
    Re,

    J'ai réussi à faire ce que je voulais. J'ai créé une fonction membre de TiXmlDocument qui se charge de récupérer toutes les variables du fichier :

    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
    void TiXmlDocument::LoadAllVariables(void)
    {
        TiXmlElement *pRoot,*pBlock;
        const TiXmlAttribute* Att;
     
        pRoot=this->FirstChildElement();
        if (!pRoot) return;
        pBlock=pRoot->FirstChildElement("VARIABLES");
        while(pBlock) // I loop on all VARIABLES block
        {
            Att = pBlock->FirstAttribute();
            while ( Att)
            {
                std::cout<<"   "<< Att->Name() <<" = "<< Att->Value() << std::endl;
                Att = Att->Next();
            };
            pBlock=pBlock->NextSiblingElement("VARIABLES");
        };
     
    }
    Ca marche nickel ! J'ai plus qu'a stocker ces variable dans une list qui sera elle membre de TiXMLDocument.

    Pour info, le fichier xml est écrit ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    (...)
        <VARIABLES
    	b="Laurent"
    	c="15"
    	d="17.3"
        />
    (...)

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

Discussions similaires

  1. [DOM] Parcourir les attributs d'un élément de la DOM
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 24/09/2008, 19h05
  2. [ListView] Comment parcourir les éléments avec la touche Tabulation ?
    Par ikeas dans le forum Windows Presentation Foundation
    Réponses: 8
    Dernier message: 13/09/2008, 22h16
  3. Réponses: 1
    Dernier message: 22/04/2008, 14h11
  4. Réponses: 1
    Dernier message: 26/07/2007, 10h57
  5. Comment parcourir les éléments d'un panel en javascript
    Par shirya dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 25/01/2007, 17h18

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