#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: Вы можете прочитать документацию? Или вы просто хотите использовать краудсорсинг для своего приложения?