0
我要生成的格式的XML C++類,XML生成使用TinyXML的
<Library>
<ConfigParams>
<parameter name= "name1"> abc </parameter>
<parameter name= "name2"> def </parameter>
</ConfigParams>
<Books>
<Book>
<name>xyz</name>
<title>jlkjlkj</title>
<Parameters>
<parameter name= "name3">name1 </parameter>
<parameter name= "name4"> name4 </parameter>
</Parameters>
</Book>
<Book>
<name>xyzkjk</name>
<title>jlj</title>
<Parameters>
<parameter name= "name8">name22 </parameter>
<parameter name= "name7"> name44 </parameter>
</Parameters>
</Book>
</Books>
</Library>
爲此,我決定使用TinyXML的:
我創建以下類:
class Param
{
public:
string value;
string name;
Param();
Param(string value, string name)
{
this->value=value;
this->name=name;
}
};
class Parameters
{
public:
list<Param> param;
Parameters();
Parameters(list<Param> param)
{
this->param = param;
}
};
class Book
{
public:
string name;
string title;
Parameters parameters;
Book();
Book(string name, string title, Parameters parameters)
{
this->name = name;
this->title = title;
this->parameters = parameters;
}
};
class Books
{
public:
list<Book> books;
Books();
Books(list<Book> books)
{
this->books = books;
}
};
class Library
{
public:
Parameters configParams;
Books books;
Library();
Library(Parameters configparams, Books books)
{
this->configParams=configparams;
this->books=books;
}
void save(const char* Filename);
};
class ConfigParams
{
public:
Parameters configparams;
ConfigParams();
ConfigParams(Parameters configparams)
{
this->configparams = configparams;
}
};
現在,當我想爲這個類層次結構生成一個Xml文檔時,
void Library::save(const char* Filename)
{
TiXmlDocument doc;
TiXmlElement* msg;
TiXmlDeclaration* decl = new TiXmlDeclaration("1.0", "", "");
doc.LinkEndChild(decl);
TiXmlElement * root = new TiXmlElement("Library");
doc.LinkEndChild(root);
//block configparams
{
TiXmlElement * configparams= new TiXmlElement("ConfigParams");
root->LinkEndChild(configparams);
Param param1=Param("name1", "abc");
Param param2=Param("name2" ,"def");
list<Param> params =list<Param>();
list <Param>::iterator Iter;
Iter=params.begin();
params.insert(Iter,param1);
params.insert(Iter,param2);
Parameters parameters=Parameters(params);
ConfigParams configparams=ConfigParams(parameters);
但是,我不知道如何使用TinyXml將這些類添加到XML表單中?
我看到了,我想問如何將類作爲XML元素進行合併。寫入文檔是我所知道的。 如何將configparams對象添加到XML元素中? – bogusbonafide 2012-04-24 09:37:11
@bogusbonafide:請參閱我的編輯以前的答案。 – dirkgently 2012-04-24 09:43:46
當我運行我的程序時,我得到likner錯誤我不知道爲什麼 我已經包含tinyxml.h在VC的包含文件夾。儘管如此,它給我的鏈接器錯誤。你能幫我嗎 ? – bogusbonafide 2012-04-25 05:35:55