C++ Markup.cpp的 CMarkup生成XML檔案
阿新 • • 發佈:2018-12-12
將一個結構體或陣列容器的內容生成到XML檔案中。
結構體定義:
struct data /*定義結構體*/
{
int year,month,day;
} ;
struct stu /*定義結構體*/
{
char name[20];
long num;
struct data birthday; /*巢狀的結構體型別成員*/
} ;
生成XML的方法:傳入Stu的引數指標
void CreateMyXml(stu* students) { CMarkup xml; xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); xml.AddElem("MyXml"); int i; for(i=0;i<sizeof(students);i++)/*採用指標法輸出陣列元素的各成員*/ { xml.IntoElem(); xml.AddElem("Student"); xml.AddAttrib("name",students[i].name); xml.AddAttrib("num",students[i].num); xml.AddAttrib("year",students[i].birthday.year); xml.AddAttrib("month",students[i].birthday.month); xml.AddAttrib("day",students[i].birthday.day); //printf("\n%d----Outputname,number,year,month,day\n",i+1); ////printf("%20s%10ld%10d//%d//%d\n",(p+i)->name,(p+i)->num, (p+i)->birthday.year,(p+i)->birthday.month,(p+i)->birthday.day); //printf("%20s%10ld%10d//%d//%d\n",student[i].name,student[i].num, student[i].birthday.year,student[i].birthday.month,student[i].birthday.day); xml.OutOfElem(); } xml.Save("D:\\MyXml.xml"); }
呼叫時先構造陣列(或者已有某個集合):
struct stu /* *p,*/student[4]=
{
{"liying",1,1978,5,23},
{"wangping",2,1979,3,14},
{"libo",3,1980,5,6},
{"xuyan",4,1980,4,21}
};
呼叫:
CreateMyXml(student);
生成的檔案如下: