2017-09-25 2 views
0

C 쌍의 벡터를 직렬화하는 사용자 지정 XML 태그를 추가 ++ std :: pair 데이터의. 아래 코드와 같습니다 :C는 벡터를 포함,이 클래스는 매우 간단합니다, 내가 템플릿 클래스를 구현하려는 내 최근 프로젝트에서 쌍</p>의 <p>을 벡터를 직렬화하는 XML 태그를 추가 ++

template <class TKey, class TValue> 
class DataModel 
{ 
    public: 
     DataModel() = default; 
     ~DataModel() = default; 

    private: 
     std::vector<boost::shared_ptr<std::pair<TKey, TValue>>> mData = {}; 
} 

프로젝트 요구 사항은 mData를 serialize하는 것입니다. 이 기능을 구현하기 위해 부스트에서 직렬화 도구를 사용했습니다. 코드 스 니펫은 다음과 같습니다.

friend class boost::serialization::access; 
template <typename Archive> 
void serialize(Archive &ar, const unsigned int version) 
{ 
    ar &boost::serialization::make_nvp("Data", mData); 
} 

부스트의 직렬화 도구를 사용하는 것은 매우 간단하고 간단합니다. 하지만 한 가지 문제는 최종 XML 파일의 std :: pair 요소에 대한 XML 태그가 부스트 코드로 제어되어 읽을 수 없다는 것입니다. 출력 XML 파일에 의미있는 XML 태그를 추가하고 싶습니다. 아래에 뭔가가 있습니다 :

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

물론 부스트는 위의 읽을 수있는 XML 태그로 직렬화되지 않습니다. 위의 직렬화 코드를 수정하여 최종 XML 파일에 의미있는 XML 태그가 포함되도록 할 수 있습니까?

답변