我添加了將XML另存爲多個本機C++類的功能。我正在尋找C++中的某些功能,它與.Net中的XmlConvert執行相同的工作。.Net中是否有本機C++版本的XMLConvert?
double d = 45.5454545;
xmlWriter.WriteAttributeAtring(XmlConvert.ToString(d));
我添加了將XML另存爲多個本機C++類的功能。我正在尋找C++中的某些功能,它與.Net中的XmlConvert執行相同的工作。.Net中是否有本機C++版本的XMLConvert?
double d = 45.5454545;
xmlWriter.WriteAttributeAtring(XmlConvert.ToString(d));
#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* t = new Test(1, 2, 3.3);
boost::archive::xml_oarchive oa(ofs);
oa << BOOST_SERIALIZATION_NVP(t);
return 0;
}
如果使用提升是毫無疑問的,你可以簡單地借用想法提供您的對象非常簡單,不必相互引用。
不幸的是,C++沒有反射,無法輕鬆完成序列化而無需處理每個類。
不幸的是,並沒有計劃將代碼添加到代碼庫中。 STL是他們使用的全部。 – Soppus
請看我編輯的答案 –
@Soppus:這是對管理層來說很重要的事情:在這一點上,我們可以展開我們自己的版本或使用增強,增強的優勢是...(穩定,良好可以使用一個'serialize'來序列化爲不同的格式......),而我們的解決方案需要更多的時間,可能有錯誤,通常不會那麼通用......除非我們模仿boost庫,在這種情況下部署成本太高。 –
我一般用simple XMLparser。它是用C++編寫的一個頭文件和一個源文件,比其他任何文件都高效得多。它簡單易用。
您只需使用一個類XMLNode即可完成所有工作。
看起來很有趣,會給建築師一看。 謝謝 – Soppus
我通常在處理C++中的簡單xml時使用http://www.grinninglizard.com/tinyxml/。易於添加到項目中,並且易於使用。 – Lucian