C++ 添加用于序列化 vector 对的自定义 XML 标记

标签 c++ serialization boost

<分区>

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

最佳答案

这个问题不是重复的,但你可以使用这个解决方案

how to customise default Boost xml Serialisation default node naming to make it more readable

关于C++ 添加用于序列化 vector 对的自定义 XML 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46396449/

相关文章:

c++ - 即使从未取消引用指针,三后指针中的硬件陷阱如何发生?

C++ 组合参数模板元编程

c# - XML 序列化 - 大数据(20GB),OutOfMemoryException

c# - 在 c# 的 xml 序列化中是否有跳过空数组的属性?

c++ - 用 std/tr1/boost::array 替换内置数组总是安全的吗?

c++ - 如何在结构中使用 boost 库中的矩阵?

c++ - 如何指定可以接受 boost::bind 函数的 C++ 函数指针

c++ - OpenCV 计算房间里的人数

c++ - 错误 : SetLayeredWindowAttributes was not declared in scope when including windows. h

javascript - 简单对象的JSON序列化不一致