使用TinyXml 解析XML文件

前端之家收集整理的这篇文章主要介绍了使用TinyXml 解析XML文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在做开发的时候,经常会使用XML的情况,在使用XML的时候,很多情况下会解析XML,那么我们来看一下在cocos2d-x中如何使用TinnyXML来解析XML文件获取到我们需要的数据!


废话不多说,先看看例子XML的格式和内容

@H_403_17@ [html] view plain copy
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <entitylevel="1"data="2,2,2"/>
  3. entitylevel="2"data="2,3,0); background-color:inherit; font-weight:bold">/>
  4. entitylevel="3"data="3,3"</level>

我们需要做到的就是获取里面level和data的信息,好,看我们该如何解析!

首先来看看在Cocos2d-x中如何将xml文件读到内存中:

[cpp] copy
    constchar*file_path=CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(fileName);
  1. unsignedlongsize;
  2. char*pFileContent=(char*)CCFileUtils::sharedFileUtils()->getFileData(file_path,"r",&size);
上面的代码比较简单,不过需要注意的是,在加载文件的时候,最好还是使用文件绝对路径,不然有时候会出现问题!继续:

copy
    TiXmlElement*rootElement=myDocument->RootElement();//Root
  1. TiXmlElement*entity=rootElement->FirstChildElement();

copy
    TiXmlDocument*myDocument=newTiXmlDocument;
  1. myDocument->Parse(pFileContent,TIXML_ENCODING_UTF8);

这个就就是去解析XML了,它将XML解析成一个又一个的TiXmlElement. 继续

copy
    TiXmlElement*entity=rootElement->FirstChildElement();

这个就比交简单了,从字面上就能看出来了,先去获取根Element,然后获取根Element的第一个子Element.好了,重点来了

copy
    while(entity){
  1. TiXmlAttribute*indexAttribute=entity->FirstAttribute();//获取entityelment的第一个属性
  2. while(indexAttribute){//成功获取
  3. char*attribute=indexAttribute->Name();//获取属性的名字
  4. if(strcmp(attribute,"level")==0){//如果属性名字为"Level"
  5. }else"data")==0){//如果属性的名字为"data"
  6. }
  7. indexAttribute=indexAttribute->Next();//移动到下一个属性
  8. entity=entity->NextSiblingElement();//移动到下一个兄弟Element
  9. }
哈哈,上面里面代码应该有注释了,感觉还算清楚的!

至此,使用TinyXML来在Cocos2d-x中解析XML文件就完整OK了!


转自:http://www.jb51.cc/article/p-mgpogdml-gp.html

猜你在找的XML相关文章