2017-09-25 23 views
0

C++添加XML標籤用於序列對的C++添加自定義XML標籤的序列化向量對的

矢量

在我最近的項目,我想實現一個模板類,這是類非常簡單,它包含了一個矢量std :: pair數據。代碼片段如下:

template <class TKey, class TValue> 
class DataModel 
{ 
    public: 
     DataModel() = default; 
     ~DataModel() = default; 

    private: 
     std::vector<boost::shared_ptr<std::pair<TKey, TValue>>> mData = {}; 
} 

我的項目需求是序列化mData。我在boost中使用序列化工具來實現此功能。代碼片段如下:

friend class boost::serialization::access; 
template <typename Archive> 
void serialize(Archive &ar, const unsigned int version) 
{ 
    ar &boost::serialization::make_nvp("Data", mData); 
} 

使用boost的序列化工具非常簡單直接。但是一個問題是最終XML文件中std :: pair元素的XML標記是由boost代碼控制的,並且它是不可讀的。我想在輸出XML文件中添加一些有意義的XML標記。如下所示:

<item> 
    <key>{KeyValue}</key> 
    <value>{Value}</value> 
</item> 

當然,boost不會像上面可讀的XML標籤那樣序列化。是否有可能修改我的上面的序列化代碼,使最終的XML文件包含有意義的XML標籤?

回答