加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

tinyxml的用法和实例

发布时间:2020-12-15 22:33:14 所属栏目:百科 来源:网络整理
导读:现在很多协议都用xml来设计,方便扩展,也具有兼容性。现在流行的json和gson就不说了,应用比较多的tinyxml也是很不错的。下面介绍下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,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://www.52php.cn/article/p-ejiquufk-bca.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读