2011-05-16 78 views
0

編輯: 如何使用tinyxml序列化xml?TinyXml如何序列化

TiXmlDocument doc; 
TiXmlElement * root; 
root = new TiXmlElement("Data"); 
doc.SaveFile("madeByHand.xml"); 

問題2:我可以反序列化我使用同一個庫tinyxml創建的xml嗎?它有這個優勢嗎?

+1

請停止加入'C++'標籤來您的文章的標題 - 沒有必要爲它,那是怎樣的標籤字段是爲。 – slugster 2011-05-16 12:21:34

+0

這裏有很多問題(以及其他未解決的問題)!您是否閱讀過[TinyXML文檔](http://www.grinninglizard.com/tinyxmldocs/index.html)? – Johnsyweb 2011-05-16 12:22:55

+0

我編輯了我的帖子:)。需要一些答案 – 2011-05-16 12:26:00

回答

2

您是否試過閱讀the documentation?第一頁上有打印功能的詳細信息。這些文檔鏈接到a tutorial具有寫入和讀取文件的例子:

#include <string> 
#include <map> 
using namespace std; 

typedef std::map<std::string,std::string> MessageMap; 

// a basic window abstraction - demo purposes only 
class WindowSettings 
{ 
public: 
    int x,y,w,h; 
    string name; 

    WindowSettings() 
     : x(0), y(0), w(100), h(100), name("Untitled") 
    { 
    } 

    WindowSettings(int x, int y, int w, int h, const string& name) 
    { 
     this->x=x; 
     this->y=y; 
     this->w=w; 
     this->h=h; 
     this->name=name; 
    } 
}; 

class ConnectionSettings 
{ 
public: 
    string ip; 
    double timeout; 
}; 

class AppSettings 
{ 
public: 
    string m_name; 
    MessageMap m_messages; 
    list<WindowSettings> m_windows; 
    ConnectionSettings m_connection; 

    AppSettings() {} 

    void save(const char* pFilename); 
    void load(const char* pFilename); 

    // just to show how to do it 
    void setDemoValues() 
    { 
     m_name="MyApp"; 
     m_messages.clear(); 
     m_messages["Welcome"]="Welcome to "+m_name; 
     m_messages["Farewell"]="Thank you for using "+m_name; 
     m_windows.clear(); 
     m_windows.push_back(WindowSettings(15,15,400,250,"Main")); 
     m_connection.ip="Unknown"; 
     m_connection.timeout=123.456; 
    } 
}; 

int main(void) 
{ 
    // block: customise and save settings 
    { 
     AppSettings settings; 
     settings.m_name="HitchHikerApp"; 
     settings.m_messages["Welcome"]="Don't Panic"; 
     settings.m_messages["Farewell"]="Thanks for all the fish"; 
     settings.m_windows.push_back(WindowSettings(15,25,300,250,"BookFrame")); 
     settings.m_connection.ip="192.168.0.77"; 
     settings.m_connection.timeout=42.0; 

     settings.save("appsettings2.xml"); 
    } 

    // block: load settings 
    { 
     AppSettings settings; 
     settings.load("appsettings2.xml"); 
     printf("%s: %s\n", settings.m_name.c_str(), 
      settings.m_messages["Welcome"].c_str()); 
     WindowSettings & w=settings.m_windows.front(); 
     printf("%s: Show window '%s' at %d,%d (%d x %d)\n", 
      settings.m_name.c_str(), w.name.c_str(), w.x, w.y, w.w, w.h); 
     printf("%s: %s\n", settings.m_name.c_str(), settings.m_messages["Farewell"].c_str()); 
    } 
    return 0; 
} 
+1

你能告訴我如何序列化xml嗎? – 2011-05-16 12:24:17

+5

@just me:你可以閱讀文檔嗎?或者你只是想衆包你的應用程序? – Johnsyweb 2011-05-16 12:27:10