<分区>
C++ 添加用于序列化 vector 对的 XML 标记
在我最近的项目中,我想实现一个模板类,这个类很简单,它包含一个 std::pair 数据 vector 。代码片段如下:
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 标记?