Sérialiser en XML en utilisant boost :: serialization

C'est une question de newbie. Je suis en train de sérialiser des objets au format XML, mais le XML résultant contient un coup de pouce de la sérialisation de la signature, les informations de version de l'id de classe, ...etc. je n'ai pas besoin. Est-il un moyen de se débarrasser d'eux sans post-traitement du message xml?

#include <fstream>
#include <iostream>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>

using namespace std;

class Test {
private:    
    friend class boost::serialization::access;
    template<class Archive> void serialize(Archive & ar,
            const unsigned int version) {
        ar & BOOST_SERIALIZATION_NVP(a);
        ar & BOOST_SERIALIZATION_NVP(b);
        ar & BOOST_SERIALIZATION_NVP(c);
    }

    int a;
    int b;
    float c;
public:
    inline Test(int a, int b, float c) {
        this->a = a;
        this->b = b;
        this->c = c;
    }
};

int main() {
    std::ofstream ofs("filename.xml");

    Test* test = new Test(1, 2, 3.3);

    boost::archive::xml_oarchive oa(ofs);
    oa << BOOST_SERIALIZATION_NVP(test);

    return 0;
}

résultats dans:

  <?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
  <!DOCTYPE boost_serialization (View Source for full doctype...)> 
  <boost_serialization signature="serialization::archive" version="6">
  <test class_id="0" tracking_level="1" version="0" object_id="_0">
    <a>1</a> 
    <b>2</b> 
    <c>3.3</c> 
  </test>
  </boost_serialization>

Je vais être la sérialisation de ces messages à des chaînes, bien que, et de les envoyer à des systèmes qui attendent un message à ressembler à cela.

  <test>
    <a>1</a>
    <b>2</b> 
    <c>3.3</c> 
  </test>

Est-il un moyen pour sérialiser xml sans la signature?

source d'informationauteur navigator | 2010-08-11