2011-01-11 4 views
3

Я просто не могу найти способ удалить отслеживание версий из ускорителя xmlarchives.удалять управление версиями при форсировании xml-сериализации

пример

<Settings class_id="0" tracking_level="0" version="1"> 
<px class_id="1" tracking_level="1" version="0" object_id="_0"> 
    <TestInt>3</TestInt> 
    <Resolution class_id="2" tracking_level="0" version="0"> 
    <x>800</x> 
    <y>600</y> 
    </Resolution> 
    <SomeStuff>0</SomeStuff> 
</px> 
</Settings> 

Я хочу, чтобы получить поездку в class_id = «0» tracking_level = «0» версия = «1» вещи, потому что в этом случае я просто не нужно, и хочу простой чистый конфигурационный файл, как

код

void serialize(Archive & ar, const unsigned int version) 
{ 
    ar & make_nvp("TestInt", TestInt); 

    ar & make_nvp("Resolution", resolution); 
    ar & make_nvp("SomeStuff", SomeStuff); 
} 

я нашел повышение :: сериализации :: track_never, но нигде не использовать его

ответ

3

пытаются создать iarchive с опцией «no_header»:

boost::archive::xml_iarchive ia(is, boost::archive::no_header); 
+0

спасибо, что хотя бы немного помогите. no_tracking находится в том же перечислении, что и no_header, но из того, что я только что прочитал, он отключен с помощью boost и оставлен как «неудачный эксперимент». Мне придется жить вместе с остальными ^^ – cppanda

+0

вы можете просто скопировать/вставьте xml_archive из boost в ваш проект и измените его –

7

пока слишком поздно для оригинального плаката, я хотел бы поделиться тем, что я нашел

BOOST_CLASS_IMPLEMENTATION(My_class, object_serializable) 

делает трюк.

3

Чтобы удалить заголовок файла архива XML вы можете использовать

boost::archive::xml_iarchive ia(is, boost::archive::no_header); 

Чтобы отключить атрибуты class_id, tracking_level и версию не отображался вам придется использовать

BOOST_CLASS_IMPLEMENTATION(<type>, boost::serialization::object_serializable) 
BOOST_CLASS_TRACKING(<type>, boost::serialization::track_never) 

для каждого тип. Макросы тезисов должны быть вызваны в этом порядке. Нотабене вы не можете использовать

BOOST_CLASS_VERSION 

с макросами, описанными выше.

Смежные вопросы