Bibliothèque de persistance d’object C ++ similaire à l’éternité

Je cherche une bibliothèque de persistance d’object C ++ pour remplacer la bibliothèque Eternity avec laquelle je travaille depuis environ une journée. La bibliothèque de l’éternité a été courte.

J’ai créé une hiérarchie d’objects similaire à celle-ci:

hiérarchie d'objet

J’ai une std::list des ArchiveJob* que j’aimerais conserver et restaurer au format XML. Chaque ArchiveJob a divers objects enfants, certains alloués sur la stack, d’autres sur le tas.

Eternity a fait un bon travail en persistant ces objects correctement, mais il a échoué lors de leur restauration.

(pour ceux qui sont familiers avec Eternity, l’opération “restore” suivante n’a pas réussi à lire les données du fichier XML)

 xml_read( sequence(), *pList, pList->begin(), xml, "ScheduleList" ); 

Cet appel a alloué de la mémoire pour l’object ArchiveJob , mais tous ses enfants n’ont pas été initialisés.

Quelqu’un peut-il recommander une solution de persistance de hiérarchie d’objects qui:

  1. Peut persister / restaurer les conteneurs STL
  2. Windows developer est-il convivial (par exemple, s’il a besoin d’être construit, a-t-il un fichier de solution VS200x)?
  3. Peut gérer des hiérarchies d’object complexes

Dois-je passer du temps à apprendre la sérialisation XML avec boost ? Comment gère-t-il les hiérarchies d’object complexes stockées dans un object maître dans un conteneur STL?

Boost Serialization est ce dont vous avez besoin:

  1. sérialisation des conteneurs
  2. il est multi-plateforme et Windows-friendly en dépit du fait qu’il n’a pas de fichier de solution VS2008
  3. sérialisation de la classe dérivée

[EDIT] en fait je me suis trompé, cela inclut le fichier de solution VS7.1

Une autre alternative est Google Protocol Buffers . Ce n’est pas XML si vous êtes ssortingctement lié à XML. C’est aussi un peu plus compliqué puisque vous devez utiliser une syntaxe spéciale dans les fichiers externes. À propos de la hiérarchie, vous pouvez lire cette discussion