C ++添加自定义XML标签以序列化对的向量[重复]

Posted

技术标签:

【中文标题】C ++添加自定义XML标签以序列化对的向量[重复]【英文标题】:C++ Add Customize XML Tag for Serializing Vector of Pairs [duplicate] 【发布时间】:2017-09-25 01:31:21 【问题描述】:

C++ 添加用于序列化向量对的 XML 标记

在我最近的项目中,我想实现一个模板类,这个类很简单,它包含一个 std::pair 数据的向量。代码 sn-p 如下:

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 中使用了序列化工具来实现这个功能。代码 sn-p 如下:

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】:

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

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

【讨论】:

以上是关于C ++添加自定义XML标签以序列化对的向量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI-自定义容器

如何在 Spring Boot 2 中使用内容协商建立自定义 xml 序列化

Rancher之主机添加

如何添加自定义数据属性以序列化 Gridster.js 中的参数?

自定义控件c#winform自定义控件实现标签控件

自定义以编程方式在 Woocommerce 中添加运费 [重复]