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 เป็นอนุกรม ฉันใช้เครื่องมือซีเรียลไลเซชันเพื่อเพิ่มเพื่อใช้คุณสมบัตินี้ ข้อมูลโค้ดดังต่อไปนี้:
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>
แน่นอนว่าการเพิ่มจะไม่ทำให้เป็นอนุกรมเหมือนแท็ก XML ที่อ่านได้ด้านบน เป็นไปได้หรือไม่ที่จะแก้ไขโค้ดการทำให้เป็นอนุกรมข้างต้นเพื่อให้ไฟล์ XML สุดท้ายมีแท็ก XML ที่มีความหมาย