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] Problème à la lecture du document


Sujet :

XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut [TinyXML] Problème à la lecture du document
    Hello!

    J'utilise donc TinyXML pour récupérer les infos de mon fichier XML.

    J'ai réussi à ouvrir le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iXmlDocument ProgramXML("PROGRAM.XML");
    ProgramXML.LoadFile()


    Ensuite juste après cela, j'essai de récupérer la valeur textuelle d'un noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgramXML.RootElement()->FirstChildElement()->FirstChildElement.Element()->GetText();
    (J'ai essayé avec les handles comme décrit dans le tuto de dvp, rien n'y fait)


    Seulement, à la compilation, voici l'erreur qui ressort :
    Citation Envoyé par Mon méchant compilateur m'
    insufficient contextual information to determine type


    Pour info, je compile pour de l'embarqué : Carte Netburner avec processeur Coldfire, sous uC/OS I ...

    D'où cela vient-il ... Une idée ?

    Merci d'avance !

    [EDIT] Une petite confirmation : TinyXML charge dans la mémoire à l'ouverture du document le fichier XML et ensuite n'accède plus au disque, c'est juste, il travail uniquement en RAM ... ?
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    731
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 731
    Points : 574
    Points
    574
    Par défaut
    1. Y'a-t-il une ligne de code spéciale affectée à ton erreur bizarre du compilo ?
    2. Le méthode GetText () de tinyxml renvoie la valeur de l'élément voulu dans quelle variable ?
    3. En enlevant la ligne provoquant l'erreur de compil, le fichier xml peut-il être chargé dans ton arbre DOM ?

  3. #3
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par ep31
    1. Y'a-t-il une ligne de code spéciale affectée à ton erreur bizarre du compilo ?
    > Oui, c'est la ligne qui est présente dans mon premier message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgramXML.RootElement()->FirstChildElement()->FirstChildElement.Element()->GetText()

    Citation Envoyé par ep31
    2. Le méthode GetText () de tinyxml renvoie la valeur de l'élément voulu dans quelle variable ?
    > Je me contente pour l'instant de l'afficher à l'écran, réduisant au maximum le code pour trouver l'erreur !



    Citation Envoyé par ep31
    3. En enlevant la ligne provoquant l'erreur de compil, le fichier xml peut-il être chargé dans ton arbre DOM ?
    > En enlevant la ligne, le programme s'exécute bien, je ne sais pas quand le fichier XML est chargé dans l'arbre DOM, mais la ligne :
    fonctionne ! Est-ce à ce moment là que l'arbre DOM et créé ? Je ne fais rien d'autre en rapport avec la librairie tinyXML. Tout le code est présent dans le premier post !



    Citation Envoyé par Hylvenir
    Voici un petit exemple ...
    J'essaie ça tout de suite et te redonne des nouvelles !

    Merci à vous deux !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  4. #4
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut


    Ton code marche à merveille Hylvenir !! Et pourtant, je n'arrive pas à déceler les réelles différences avec le miens ...

    Mais c'est pas grave !! Le temps presse et je continue avec cette solution là ! J'avais peur de pas pouvoir mettre en place le parseur sur mon système embarqué !



    Je vous remercie de m'avoir rattrappé juste à la limite de tomber dans le gouffre du désespoir sans fond qu'ouvre parfois les sombres compilateurs de leurs descriptions sournoises ! Et pour peu je vous dirais que je vous aime, mais je vais me retenir sinon je vais passer dans le bêtisier !!
    Merci et si t'as vu quelque chose de bizarre ep31 fais moi signe !

    Bon développement !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  5. #5
    Membre averti
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Points : 307
    Points
    307
    Par défaut
    Voici un petit exemple que j'avais fait pour m'habituer à la lib.

    Si il fonctionne pour toi, tu devrais facilement l'adapter.
    Ici, il se contente d'afficher ton fichier XML.


    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    #include "tinyxml.h"
     
     
     
    #include <iostream>
    #include <string>
    using namespace std;
     
     
     
    void Parcours( TiXmlNode* node, int level = 0 )
    {
        cout << string( level*3, ' ' ) << "[" << node->Value() << "]";
        if ( node->ToElement() )
        {
            TiXmlElement* elem = node->ToElement();
            for ( const TiXmlAttribute* attr = elem->FirstAttribute(); attr; attr = attr->Next() )
                cout << " (" << attr->Name() << "=" << attr->Value() << ")";
        }
        cout << "\n";    
     
     
     
        for( TiXmlNode* elem = node->FirstChild(); elem; elem = elem->NextSibling() )
            Parcours( elem, level + 1 );
    }
     
     
     
    int main( int argc, char* argv[] )
    {
        TiXmlDocument doc( argv[1]?argv[1]:"" );
        bool loadOkay = doc.LoadFile();
        if ( !loadOkay ) {
            cerr << "Could not load test file. Error='" << doc.ErrorDesc() << "'. Exiting.\n";
            return 1;
        }
     
     
     
        Parcours( doc.RootElement() );
    }

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par femtosa
    Hello!

    J'utilise donc TinyXML pour récupérer les infos de mon fichier XML.

    J'ai réussi à ouvrir le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    iXmlDocument ProgramXML("PROGRAM.XML");
    ProgramXML.LoadFile()


    Ensuite juste après cela, j'essai de récupérer la valeur textuelle d'un noeud :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgramXML.RootElement()->FirstChildElement()->FirstChildElement.Element()->GetText();
    (J'ai essayé avec les handles comme décrit dans le tuto de dvp, rien n'y fait)


    Seulement, à la compilation, voici l'erreur qui ressort :



    Pour info, je compile pour de l'embarqué : Carte Netburner avec processeur Coldfire, sous uC/OS I ...

    D'où cela vient-il ... Une idée ?

    Merci d'avance !

    [EDIT] Une petite confirmation : TinyXML charge dans la mémoire à l'ouverture du document le fichier XML et ensuite n'accède plus au disque, c'est juste, il travail uniquement en RAM ... ?
    salut t'as dit ke tu as pu ouvrir le fichier xml tu peux me donner ta methode afin que je puisse ouvrir mes fichiers xml ?

  7. #7
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Salut jalelouss !

    J'ai résolu mon problème grâce au code posté par Hylvenir !

    Jettes-y un coup d'oeil, et pose tes questions aux besoins !

    Je ne sais pas si t'as déjà regardé cette introduction !

    Bon développement !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par femtosa
    Salut jalelouss !

    J'ai résolu mon problème grâce au code posté par Hylvenir !

    Jettes-y un coup d'oeil, et pose tes questions aux besoins !

    Je ne sais pas si t'as déjà regardé cette introduction !

    Bon développement !
    j'ai déja vu l'intro et j'ai procédé avec le meme principe mé mon probleme est lors de la compilation j'aurai des ennuis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ./Convert.cpp: In function ‘int main(int, char**)’:
    ../Convert.cpp:21: error: invalid conversion from ‘char’ to ‘const char*’
    ../Convert.cpp:21: error: initializing argument 1 of ‘TiXmlDocument::TiXmlDocument(const char*)
    apres la compilation de ce 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
    int main(int argc, char **argv) 
    {   
    	char lien[8]={'M','P','4','B','o','x',' '};
    	strcat(lien,argv[2]);
    	char xmt[6]={' ','-','x','m','t'};
    	strcat(lien,xmt);
    	system(lien);
    TiXmlDocument doc(*lien);
    if(!doc.LoadFile()){
        cerr << "erreur lors du chargement" << endl;
        cerr << "error #" << doc.ErrorId() << " : " << doc.ErrorDesc() << endl;
        return 1;
    }
     
     
    }
    ah autre chose je travaille avec eclipse et j'ai ajouté les bibliotheques tinyxml.h et
    tinystr.h dans /usr/local/include pour les appeler a travers eclipse , ben je sais pas comment faire aides moi stp !!

  9. #9
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    As-tu bien lu ton message d'erreur ?
    Citation Envoyé par jalelouss
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ../Convert.cpp:21: error: invalid conversion from ‘char’ to ‘const char*’
    ../Convert.cpp:21: error: initializing argument 1 of ‘TiXmlDocument::TiXmlDocument(const char*)’
    Je ne trouve pas la ligne 21 car je n'en compte que 16 ... Mais ton problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlDocument doc(*lien);
    Tu passes un 'char' au lieu d'un 'char*' ... !
    Ceci devrait mieux marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlDocument doc(lien);
    De plus, j'ai pu remarqué quelques incohérences en lisant ton code en diagonale, tels que :
    • Déclaration de 'lien' comme étant une chaîne de 8 caractères, mais d'après les 'strcat' que tu fais, tu utilises bien plus que cela. Sans oublier de compter le caractère de fin de chaîne ... !
    • Initialisation de 7 caractère pour 'lien' alors qu'il en compte 8
    • Initialisation de 5 caractère pour xmt alors qu'il en compte 6
    Ensuite, si tu veux tester uniquement le fonctionnement de la librairie TinyXML, je te conseille de passer des chaînes de caractères constante 'en dur' dans ton code, car d'après ce que je vois, tu risques d'avoir aussi des problèmes de ce côté là ... De ce fait, tu pourras plus vite cibler l'erreur : TinyXML ou les arguments passés ... ! Mais ceci est du ressort du forum C++ ... Ici on parle de XML !

    Bon développement et n'hésite pas à poser tes questions, en réfléchissant au bon forum si jamais !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  10. #10
    Nouveau membre du Club
    Inscrit en
    Novembre 2006
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par femtosa
    As-tu bien lu ton message d'erreur ?Je ne trouve pas la ligne 21 car je n'en compte que 16 ... Mais ton problème se situe ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlDocument doc(*lien);
    Tu passes un 'char' au lieu d'un 'char*' ... !
    Ceci devrait mieux marcher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlDocument doc(lien);
    De plus, j'ai pu remarqué quelques incohérences en lisant ton code en diagonale, tels que :
    • Déclaration de 'lien' comme étant une chaîne de 8 caractères, mais d'après les 'strcat' que tu fais, tu utilises bien plus que cela. Sans oublier de compter le caractère de fin de chaîne ... !
    • Initialisation de 7 caractère pour 'lien' alors qu'il en compte 8
    • Initialisation de 5 caractère pour xmt alors qu'il en compte 6
    Ensuite, si tu veux tester uniquement le fonctionnement de la librairie TinyXML, je te conseille de passer des chaînes de caractères constante 'en dur' dans ton code, car d'après ce que je vois, tu risques d'avoir aussi des problèmes de ce côté là ... De ce fait, tu pourras plus vite cibler l'erreur : TinyXML ou les arguments passés ... ! Mais ceci est du ressort du forum C++ ... Ici on parle de XML !

    Bon développement et n'hésite pas à poser tes questions, en réfléchissant au bon forum si jamais !
    wi je sais mé j'ai fait un tt petit programme de test de cette bibliotheque et me génère des erreurs (je suis pas sous unix mnt donc j'ai pa le travail )
    tel que référence indéfinie qd je fais l'instanciation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TiXmlDocument doc("blabla.xml");
    (c simple comme exemple )mais je trouves des ennuis !!!

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

Discussions similaires

  1. [Toutes versions] Problème lecture contenu document Word
    Par CTotophe85 dans le forum Word
    Réponses: 4
    Dernier message: 29/07/2014, 02h48
  2. [WD14] Problème de lecture d'un document Xml
    Par drogba72 dans le forum WinDev
    Réponses: 2
    Dernier message: 08/01/2012, 20h59
  3. Réponses: 1
    Dernier message: 02/07/2007, 15h57
  4. [fread] Problème de lecture de buffer
    Par karl3i dans le forum C
    Réponses: 2
    Dernier message: 25/09/2003, 09h21
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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