Ajout de nœuds avec la même clé pour une propriété de l'arbre

Je suis à l'aide du coup de pouce de la propriété de l'arbre à lire et à écrire du XML. À l'aide d'une application de feuille de calcul j'ai fait je veux enregistrer le contenu de la feuille de calcul au format xml. C'est un devoir scolaire, donc je suis obligé d'utiliser le format suivant pour le XML:

<?xml version="1.0" encoding="UTF-8"?>
<spreadsheet>
   <cell>
      <name>A2</name>
      <contents>adsf</contents>
   </cell>
   <cell>
      <name>D6</name>
      <contents>345</contents>
   </cell>
   <cell>
      <name>D2</name>
      <contents>=d6</contents>  
   </cell>
</spreadsheet>

Pour un programme de test simple, j'ai écrit:

int main(int argc, char const *argv[])
{
boost::property_tree::ptree pt;

pt.put("spreadsheet.cell.name", "a2");
pt.put("spreadsheet.cell.contents", "adsf");

write_xml("output.xml", pt);

boost::property_tree::ptree ptr;
read_xml("output.xml", ptr);

ptr.put("spreadsheet.cell.name", "d6");
ptr.put("spreadsheet.cell.contents", "345");
ptr.put("spreadsheet.cell.name", "d2");
ptr.put("spreadsheet.cell.contents", "=d6");

write_xml("output2.xml", ptr);

return 0;
}

Sur cette base question je vois le put méthode remplace rien au niveau de ce nœud, au lieu d'ajouter un nouveau. Ce qui est exactement la fonctionnalité que je vois:

Output.xml

<?xml version="1.0" encoding="utf-8"?>
<spreadsheet>
  <cell>
    <name>a2</name>
    <contents>adsf</contents>
  </cell>
</spreadsheet>

Output2.xml

<?xml version="1.0" encoding="utf-8"?>
<spreadsheet>
  <cell>
    <name>d2</name>
    <contents>=d6</contents>
  </cell>
</spreadsheet>

À la recherche à la la documentation je vois ce add_child méthode qui permettra de Add the node at the given path. Create any missing parents. If there already is a node at the path, add another one with the same key.

Je n'arrive pas à comprendre comment l'utiliser que add_child méthode, quelqu'un pourrait-il expliquer comment l'utiliser?

Est-il une meilleure façon de le faire pour atteindre le format de fichier que je veux?

Ne pouvez-vous pas simplement utiliser des le nom de la cellule dans le nom de l'enfant? c'est à dire "spreadsheet.cell.d6"
parce que ce ne serait pas répondre à la xml exigences.

OriginalL'auteur Deekor | 2013-04-21