TinyXML как сериализовать

#c #tinyxml

#c #tinyxml

Вопрос:

Редактировать: Как я могу сериализовать xml с помощью tinyxml?

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

Вопрос 2. Могу ли я десериализовать созданный мной xml с помощью той же библиотеки tinyxml? есть ли у него это преимущество?

Комментарии:

1. Пожалуйста, прекратите добавлять c тег к заголовку ваших сообщений — в этом нет необходимости, для этого и предназначено поле tags.

2. Здесь много вопросов (и в других ваших открытых вопросах)! Вы читали документы TinyXML ?

3. я отредактировал свой пост :). нужны некоторые ответы

4. Как неоднократно отвечали на ваши похожие вопросы: нет, вы не можете автоматически (де) сериализовать объект в C . Библиотека xml, подобная TinyXML, позаботится о разборе xml-данных за вас, но вам нужно написать код (де) сериализации самостоятельно.

Ответ №1:

Вы пробовали читать документацию? На этой первой странице есть подробная информация о функции печати. Эти документы ссылаются на учебное пособие, в котором приведен пример записи в файл и чтения из него:

 #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 stringamp; 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: %sn", settings.m_name.c_str(), 
            settings.m_messages["Welcome"].c_str());
        WindowSettings amp; 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: %sn", settings.m_name.c_str(), settings.m_messages["Farewell"].c_str());
    }
    return 0;
}
  

Комментарии:

1. Можете ли вы сказать мне, как сериализовать xml?

2. @just me: Вы можете прочитать документацию? Или вы просто хотите использовать краудсорсинг для своего приложения?