0

編集:tinyxmlを使用してxmlをシリアル化するにはどうすればよいですか?

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

質問 2: 同じライブラリ tinyxml で作成した xml を逆シリアル化できますか? この利点はありますか?

4

1 に答える 1

2

ドキュメントを読んでみましたか?その最初のページに印刷機能の詳細があります。これらのドキュメントは、ファイルへの書き込みとファイルからの読み取りの例を含むチュートリアルにリンクしています。

#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;
}
于 2011-05-16T12:21:14.553 に答える