Bonjour,
Je dispose d'un fichier XML qui a la forme suivante:
Cependant les noms ont des erreurs et j'aimerait donc les modifier.
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 <personnes> <personne> <nom>NOM1</nom> <prenom>PRENOM1</prenom> <personne/> <personne> <nom>NOM2</nom> <prenom>PRENOM2</prenom> <personne/> <personne> <nom>NOM3</nom> <prenom>PRENOM3</prenom> <personne/> etc... <personnes/>
Lorsque j'essaie
J'arrive bien à modifier un des noms.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ptree pt read_xml(filename,pt); ptree &pt_personnes = pt.get_child("personnes"); ptree &pt_personne = pt_personnes.get_child("personne"); pt_personne.put("NOM","NOM1modifie");
Mais si j'itère sur tous les nom:
Je ne modifie rien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 ptree pt read_xml(filename,pt); ptree &pt_personnes = pt.get_child("personnes"); for( ptree::iterator &it = pt_personnes.begin(); it != pt_personnes.end();it++){ ptree &pt_personne = it->second; pt_personne.put("NOM","NOM1modifie"); } write_xml(filename, pt);
Il me semble que l'itérateur est une référence sur une copie du noeud contenant le nom. Je ne fais donc que modifier une copie.
Auriez-vous une solution pour modifier l'ensemble des noms?
merci d'avance
PS s'il vous semble qu'une telle manipulation serait plus simple avec une autre librairie, je suis ouvert aux suggestions.
Partager