這是一個新手問題。我試圖將一些對象序列化爲XML,但是生成的XML包含boost序列化簽名,版本信息,class id等等。我不需要。有沒有辦法擺脫他們沒有後處理XML消息?使用boost :: serialization序列化爲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;
}
結果:
<?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>
我會序列化這些消息字符串,不過,將它們發送到預期的消息,看起來像這樣的系統。
<test>
<a>1</a>
<b>2</b>
<c>3.3</c>
</test>
有沒有一種方法來序列化沒有簽名的XML?
標誌你知道使用的Xerces生成的輸出@navigator想要的類型的例子嗎? – Jeff 2014-05-29 16:11:20
你爲什麼說這不是預期的用法? 文檔[不贊同您](http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/index.html):«'除了實現持久性外,此庫在其他情況下也很有用。最明顯的例子就是將數據編組傳輸到另一個系統。「» – 2016-05-09 23:41:24