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.




Répondre avec citation
Partager