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

左心房为你撑大大i 提交于 2019-11-28 14:18:44

Serialization for the map is a generic implementation.

You can of course provide a /better match/ and override the naming:

namespace boost { namespace serialization { 
    template <typename Ar>
        void serialize(Ar& ar, std::pair<int const, std::string>& p, unsigned) {
            ar & make_nvp("groupid", p.first) & make_nvp("groupType", p.second);
        }
} }

See it Live On Coliru

This prints (excerpt):

<Connections class_id="1" tracking_level="0" version="0">
    <count>2</count>
    <item_version>0</item_version>
    <item class_id="2" tracking_level="0" version="0">
        <groupid>1</groupid>
        <groupType>ETOTO</groupType>
    </item>
    <item>
        <groupid>2</groupid>
        <groupType>ETOTO</groupType>
    </item>
</Connections>

Of course, this has the problem that ALL maps of int -> string get the same naming, so be sure to look at http://www.boost.org/doc/libs/1_63_0/libs/serialization/doc/strong_typedef.html

Disclaimer

I'd suggest that if you want/need this level of control, you shouldn't not be using XML archive.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!