70 void BackElement(TiXmlElement* RootElement){
71 for(TiXmlElement* StuElement = RootElement->FirstChildElement();StuElement != NULL; StuElement = StuElement->NextSiblingElement()){
72 cout << StuElement->Value() << ": ";
73 TiXmlElement* TmpElement = StuElement;
74 if( NULL != TmpElement->Value()){
75 TiXmlAttribute* pAttr = TmpElement->FirstAttribute();//第一个元素属性
76 while(NULL != pAttr){
77 cout << pAttr->Name() << "=" << pAttr->Value() << ";";
78 pAttr = pAttr->Next();
79 }
80 cout << endl;
81 if(NULL != TmpElement->FirstChild())//是否有孩子元素
82 BackElement(TmpElement);
83 }
84 }
85 }
86
87
88 //解析xml文件
89 int ReadXmlFile()
90 {
91 TiXmlDocument mydoc("log.xml");//等待被解析的xml文档
92 bool loadOk = mydoc.LoadFile();//加载xml文档
93 if(!loadOk){
94 cout<< "could not load the test file.Error:" << mydoc.ErrorDesc() <<endl;
95 exit(1);
96 }
97 TiXmlElement *RootElement = mydoc.RootElement();//根元素
98 cout << RootElement->Value() << ": " <<"\n";//元素名
99 BackElement(RootElement);
100 return 1;
101 }
102
103 int main(int argc, char* argv[])
104 {
105 //读操作
106 ReadXmlFile();
107 return 0;
108 }
以上代码可以实现对XML文件递归的解析输出,如果引用请标明来处,记得点咱加关注哦!~