С++ Добавить настраиваемый тег XML для сериализации вектора пар

C++ Добавить XML-тег для сериализации вектора пар

В моем недавнем проекте я хочу реализовать класс шаблона, этот класс очень прост, он содержит вектор данных std::pair. Фрагмент кода, как показано ниже:

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-файле управляется кодом повышения и не читается. Я хочу добавить какой-нибудь значимый XML-тег в выходной XML-файл. Что-то нравится ниже:

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

Конечно, boost не будет сериализоваться, как приведенный выше читаемый тег XML. Можно ли изменить приведенный выше код сериализации, чтобы окончательный файл XML содержал значимый тег XML?


person newcarcrazy    schedule 25.09.2017    source источник


Ответы (1)


Вопрос не дубликат, но вы можете использовать это решение

как настроить Boost по умолчанию xml Имена узлов сериализации по умолчанию, чтобы сделать их более читабельными

person Orçun Çolak    schedule 25.09.2017