首页 > 代码库 > tinyxml的用法和实例

tinyxml的用法和实例

        现在很多协议都用xml来设计,方便扩展,也具有兼容性。现在流行的json和gson就不说了,应用比较多的tinyxml也是很不错的。下面介绍下tinyxml的用法和实例。

 

使用tinyxml,需要在工程中包含其源码,并在头文件建立引用关系。下面是一个简单的例子,按照层次关系打印出xml文件。

代码如下:

#include "stdafx.h"  #include "targetver.h"  #include "tinystr.h"  #include "SystemCommon.h"  #include "tinyxml.h"   void ParseXML(TiXmlElement *Element);  int _tmain(int argc, _TCHAR* argv[]) {      char c[2048] =  "<!-- This is a comment -->"                     "<?xml version=\"1.0\"  encoding=\"utf-8\"?>"                     "<Class name=\"计算机软件班\">计算机"                     "<Students>"                     "<student name=\"张三\" studentNo=\"13031001\" sex=\"男\" age=\"22\">"                     "<phone>88208888</phone>"                     "<ET name=\"de\" ground = \"ground\">on the ground</ET>"                     "<et name = \"et name\" ball = \"ball\"/>"                     "<address>西安市太白南路二号</address>"                     "</student>"                     "<student name=\"李四\" studentNo=\"13031002\" sex=\"男\" age=\"20\">"                     "<phone>88206666</phone>"                     "<address>西安市光华路</address>"                     "</student>"                     "</Students>"                     "</Class>";     TiXmlDocument *myDocument = new TiXmlDocument();       //假设文件名是xml.xml      myDocument->LoadFile("xml.xml",TIXML_ENCODING_UTF8);     //myDocument->Parse(c, 0,TIXML_ENCODING_UNKNOWN);      TiXmlElement *rootElement = myDocument->RootElement();      while(rootElement)     {         ParseXML(rootElement);         rootElement = rootElement->NextSiblingElement();     }      delete myDocument;       cout<<"----------------END-----------------"<<endl;     return 0; } void PrintTree(int c) {     if(c <= 0)         return ;     while(c)     {         cout<<" ";         --c;     }     return; } //调用 tinyxml 解析 xml  void ParseXML(TiXmlElement *pElement) {     static int i= 0;     PrintTree(i);     cout<<pElement->Value()<<" ";     const char * str = NULL;     if(str = pElement->GetText())         cout<<" "<<str<<endl;     else         cout<<endl;      TiXmlAttribute* attributeOfStudent = pElement->FirstAttribute();     while(attributeOfStudent)     {         PrintTree(i);         std::cout << attributeOfStudent->Name() << " : " << attributeOfStudent->Value()<<std::endl;         attributeOfStudent = attributeOfStudent->Next();     }     TiXmlElement* ChildElement = pElement->FirstChildElement();     while(NULL != ChildElement)     {         i++;         ParseXML(ChildElement);         i--;         ChildElement = ChildElement->NextSiblingElement();     } } 


 

例如要解析的文件内容是
 

<?xml version="1.0" encoding="utf-8"?><!-- This is a comment --><Class name="Class of SoftWare">       <Students>      <student name="LiLei" studentNo="13031001" sex="Man" age="22">        <phone>88208888</phone>        <ET name="de" ground = "ground">on the ground           <et name = "et name" ball = "ball"/>        </ET>        <address>Road1</address>      </student>      <student name="LiSi" studentNo="13031002" sex="Man" age="20">        <phone>88206666</phone>        <address>Road2</address>      </student>    </Students>    <Teatcher>few teatchers    </Teatcher></Class>


 转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/38310691