Đây là câu hỏi mới. Tôi đang cố gắng serialize một số đối tượng để XML, nhưng kết quả XML có chứa một chữ ký serialization tăng cường, thông tin phiên bản, lớp id, ... vv. mà tôi không cần. Có cách nào để loại bỏ chúng mà không cần xử lý thông điệp xml không?Nối tiếp thành XML bằng cách sử dụng boost :: serialization
#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;
}
kết quả trong:
<?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>
tôi sẽ được tuần tự hóa các thông báo để các chuỗi, mặc dù, và gửi chúng đến các hệ thống mong đợi một thông điệp tới trông như thế này.
<test>
<a>1</a>
<b>2</b>
<c>3.3</c>
</test>
Có cách nào để sắp xếp xml không có chữ ký không?
Bạn có biết một ví dụ của việc sử dụng Xerces để tạo ra các loại đầu ra @navigator muốn? – Jeff
Tại sao bạn nói đó không phải là mục đích sử dụng? Tài liệu [không đồng ý với bạn] (http://www.boost.org/doc/libs/1_60_0/libs/serialization/doc/index.html): «' Thư viện này sẽ hữu ích trong các ngữ cảnh khác ngoài việc triển khai kiên trì . Trường hợp rõ ràng nhất là dữ liệu marshalling để truyền sang hệ thống khác.' » –