[Cocos2d-x] 使用TinyXml 解析XML文件

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


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

<?xml version="1.0" encoding="utf-8"?>
<entity level="1" data="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2"/>
<entity level="2" data="2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,3,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2"/>
<entity level="3" data="3,3,2,2,2,3,3,3,3,2,2,2,3,3,2,2,2,2,2,2,2,2,2,3,3,3,2,2,2,2,3,3,3,2,2,2,2,3,3,3,2,2,2,2,2,2,2,2,2,3,3,2,2,2,3,3,3,3,2,2,2,3,3"/>
</level>

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

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

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

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

    TiXmlDocument* myDocument = new TiXmlDocument;
    myDocument->Parse(pFileContent,0,TIXML_ENCODING_UTF8);

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

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

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

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

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



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值