Précédent   Forum des professionnels en informatique > C et C++ > Bibliothèques > XML
XML Forum API et protocoles XML en C & C++. Avant de poster -> FAQ XML
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/02/2012, 17h12   #1
Invité de passage
 
Femme
Ingénieur développement logiciels
Inscription : avril 2004
Messages : 4
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : avril 2004
Messages : 4
Points : 0
Points : 0
Par défaut Problème dans le code donné en exemple dans le tuto sur tinyxml?

Bonjour,
Je viens de lire le tuto sur tinyxml fait par khayyam (très bien fait d'ailleurs). Mais il y a quelque chose que je ne comprends pas dans le code donné en exemple. Voici le code qui me pose problème :

Code C++ :
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
int user_mgr::modifier(const string& u, const string& attrib, const string& value){
    bool trouve = false;
    TiXmlHandle hdl(doc);
 
    TiXmlElement *elem = hdl.FirstChildElement().FirstChildElement().Element();
 
    while(elem && !trouve){
        if( string(elem->Attribute("name")) == u){
            trouve = true;
            break;
        }
        elem = elem->NextSiblingElement();
    }
 
    if (!trouve){
        cerr << "client inexistant" << endl;
        return 1;
    }
    else{
        elem->SetAttribute(attrib, value);
        doc->SaveFile(xml_filename);
 
        // mise a jour de la liste
        list<user>::iterator i=user_list.begin();
        while(i!=user_list.end() && i->name!=u){
            if(attrib == "name")
                i->name=value;
            else if(attrib == "pass")
                i->pass=value;
            else if(attrib == "droits"){
                istringstream iss(value);
                int int_value;
                iss >> int_value;
                i->droits=int_value;
            }
            else
                cerr << "attribut inconnu" << endl;
            i++;
        }
 
        return 0;
    }
}

Dans la partie mise à jour de ma liste, si j'ai bien compris on parcourt toute la liste jusqu'à tomber sur l'élément qui a pour nom "u", et pour chaque élément trouvé (tous les éléments qui se trouvent avant "u" dans la liste donc), on met à jour l'attribut avec sa nouvelle valeur à savoir "value". Donc tous les éléments se trouvant avant "u" dans la liste auront la même valeur pour l'attribut donné.
Y a t'il un bug dans ce bout de code, ou bien est ce quelque chose m'a échappé?

Merci
astrid est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2012, 18h45   #2
Responsable Portail
 
Avatar de khayyam90
 
Homme
Ingénieur développement logiciels
Inscription : janvier 2004
Messages : 7 411
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 27
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : janvier 2004
Messages : 7 411
Points : 10 549
Points : 10 549
Bonsoir,

En relisant mon code, je me suis posé la même question que toi. En fait chacune des opérations d'ajout/suppression/modification agit sur l'objet tinyxml et sur la liste d'objets "métiers" pour les garder synchronisés. C'est la modification des objets de cette liste qui n'était pas correcte. J'ai modifié le code proposé dans l'article.

Merci de ta vigilance
__________________
Responsable du Portail Developpez. A la recherche d'un poste sur Strasbourg.
Mes tutoriels Algo, Web, C++, PHP - Mon CV
khayyam90 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h47.


 
 
 
 
Partenaires

Hébergement Web