Bonjour,
Je suis confronté à un problème qui me laisse un peu... comment dire... sur les fesses !

J’essaie de lire un fichier xml avec tiny avec une petite boucle for que j'ai récupéré du net et modifié à ma guise. Mais le problème est que dés l'instant ou j'ai cette boucle for dans mon code, le programme ne reconnait plus mon fichier à l'ouverture.

Mon code est le suivant :

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
 
TiXmlDocument document("settings.xml");
 
    if(!document.LoadFile())
    {
        cerr << "erreur lors du chargement" << endl;
        cerr << "error #" << document.ErrorId() << " : " << document.ErrorDesc()) << endl;
 
        system("pause");
        return EXIT_FAILURE;
    }
 
 
    //TiXmlHandle xml_HANDLE(&document);
    TiXmlElement* element = document.FirstChildElement();
 
    if(element == NULL)
    {
        cerr << "Le programme n'a pas pu charger le contenu du fichier."
             << endl;
        document.Clear();
 
        system("pause");
        return EXIT_FAILURE;
    }
 
    for(TiXmlElement* elem = element->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
    {
        string elemName = elem->Value();
 
        const char* attr;
 
        if(elemName == "id")
        {
            attr = elem->Attribute("id");
 
            if(attr != NULL)
            {
                cout << attr << endl;
            }
        }
 
    }
Je crée mon objet, je charge le fichier, et je tente de récupérer une information. Quand je tente de lancer le programme comme ça, il s'arrète au if(!document.LoadFile()) et il me ferme le programme.

Mais dés l'instant ou je commente ce bout de 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
 
    for(TiXmlElement* elem = element->FirstChildElement(); elem != NULL; elem = elem->NextSiblingElement())
    {
        string elemName = elem->Value();
 
        const char* attr;
 
        if(elemName == "id")
        {
            attr = elem->Attribute("id");
 
            if(attr != NULL)
            {
                cout << attr << endl;
            }
        }
 
    }
Et que je lance mon programme, il me charge le fichier normalement et finit sans s’arrêter .

Je suis un peu bouche bée pour le coup car je ne comprend pas pourquoi une telle boucle peut influencer le chargement du fichier, surtout qu'elle est placée après dans le code.

Si quelqu'un à une solution, un truc que j'aurais oublié ou mal fait....

Merci !