1. 程式人生 > >C++ Markup.cpp的 CMarkup生成XML檔案

C++ Markup.cpp的 CMarkup生成XML檔案

將一個結構體或陣列容器的內容生成到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);


生成的檔案如下: