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:
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:
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:
[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