C ++添加自定义XML标记以序列化对向量

时间:2017-09-25 01:31:22

标签: c++ serialization boost

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标记?

1 个答案:

答案 0 :(得分:1)