2011-11-09 61 views
0

我添加了將XML另存爲多個本機C++類的功能。我正在尋找C++中的某些功能,它與.Net中的XmlConvert執行相同的工作。.Net中是否有本機C++版本的XMLConvert?

double d = 45.5454545; 
xmlWriter.WriteAttributeAtring(XmlConvert.ToString(d)); 
+0

我通常在處理C++中的簡單xml時使用http://www.grinninglizard.com/tinyxml/。易於添加到項目中,並且易於使用。 – Lucian

回答

0

考慮使用boost XML serilization

#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; 
} 

如果使用提升是毫無疑問的,你可以簡單地借用想法提供您的對象非常簡單,不必相互引用。

  1. 創建的XMLDocument
  2. 每個類都有一個序列化(的XMLDocument *)方法
  3. 在他們的Serialize方法,他們更新與成員的XMLDocument。

不幸的是,C++沒有反射,無法輕鬆完成序列化而無需處理每個類。

+0

不幸的是,並沒有計劃將代碼添加到代碼庫中。 STL是他們使用的全部。 – Soppus

+0

請看我編輯的答案 –

+0

@Soppus:這是對管理層來說很重要的事情:在這一點上,我們可以展開我們自己的版本或使用增強,增強的優勢是...(穩定,良好可以使用一個'serialize'來序列化爲不同的格式......),而我們的解決方案需要更多的時間,可能有錯誤,通常不會那麼通用......除非我們模仿boost庫,在這種情況下部署成本太高。 –

0

我一般用simple XMLparser。它是用C++編寫的一個頭文件和一個源文件,比其他任何文件都高效得多。它簡單易用。

您只需使用一個類XMLNode即可完成所有工作。

+0

看起來很有趣,會給建築師一看。 謝謝 – Soppus

相關問題