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

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 ที่มีความหมาย


person newcarcrazy    schedule 25.09.2017    source แหล่งที่มา


คำตอบ (1)


คำถามไม่ซ้ำกัน แต่คุณสามารถใช้วิธีแก้ปัญหานี้ได้

วิธีปรับแต่ง Boost xml เริ่มต้น การตั้งชื่อโหนดเริ่มต้นของการทำให้เป็นอนุกรมเพื่อให้อ่านง่ายขึ้น

person Orçun Çolak    schedule 25.09.2017