C 添加自定义XML标签,用于序列化对向量

C++ Add Customize XML Tag for Serializing Vector of Pairs

本文关键字:用于 序列化 向量 标签 添加 自定义 XML      更新时间:2023-10-16

c 添加XML标签,用于序列化的对向量

在我最近的项目中,我想实现一个模板类,这是非常简单的,它包含std ::配对数据的向量。代码段如下:

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 :: PAIRE元素的XML标签由Boost代码控制,并且不可读。我想在输出XML文件中添加一些有意义的XML标签。下面喜欢的东西:

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

当然,Boost不会像上述可读XML标签那样序列化。是否可以修改我的上述序列化代码以使最终的XML文件包含有意义的XML标签?

问题不是重复,但您可以使用此解决方案

如何自定义默认的boost xml序列化默认节点命名以使其更可读