2011-01-11 59 views
3

我只是找不到從boost xmlarchives中刪除版本跟蹤的方法。刪除boost 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> 

我想要得到的類標識碼=「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); 
} 

我發現的boost ::系列化:: track_never,但無處可使用它

回答

3

嘗試創建iarchive與「no_header」選項:

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

謝謝,至少有一點幫助。 no_tracking與no_header是相同的枚舉,但是從我剛纔讀到的它被禁用boost,並且作爲「失敗的實驗」遺留下來..我將與其他人一起生活^^ – cppanda 2011-01-12 18:05:31

7

雖然爲時已晚,原始的海報,我想分享一下我發現

BOOST_CLASS_IMPLEMENTATION(My_class, object_serializable) 

的伎倆。

3

要刪除XML歸檔文件的標題,你可以使用

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

要禁止從正在顯示的屬性類標識碼,tracking_level和版本,你將不得不使用

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

每個類型。這些宏需要按此順序調用。注:你不能使用

BOOST_CLASS_VERSION 

與上述的宏。