码迷,mamicode.com
首页 > 编程语言 > 详细

cocos2dx 3.1.1 用tinyxml2.h解释xml (C++)

时间:2014-08-26 15:38:26      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:cocos2dx   3.1.1   xml解析   

cocos2dx 3.1.1怎样用tinyxml2.h解释xml? (C++)

cocos2dx已经自带了tinyxml2用于xml的解释,很早之前从2.x的版本开始已经无需再特地去下载.

不过,tinyxm2关于3.x引擎的文档比较少,特此来贡献一个!


首先加入头文件:

#include "cocos-ext.h”

#include "tinyxml2/tinyxml2.h”

using namespace tinyxml2;

using namespace std;



例子1:

text.xml文件内容如下

<?xml version="1.0"?>

<Hello>World</Hello> 

xml解释:

    string file_path = FileUtils::getInstance()->fullPathForFilename<span style="font-family: Menlo; font-size: 11px;">(</span><span style="color: rgb(209, 47, 27); font-family: Menlo; font-size: 11px;">"testset.xml"</span><span style="font-family: Menlo; font-size: 11px;">);//</span><span style="font-family: Menlo; font-size: 11px;">如果新建的是</span><span style="font-family: Menlo; font-size: 11px;">lua项目中需要写</span><span style="font-family: HannotateSC-W5;">("res/text.xml");</span><span style="font-family: Menlo; font-size: 11px;">
</span>    log("external file path = %s",file_path.c_str());
    XMLDocument doc;
    //加载文件
    doc.LoadFile(file_path.c_str());
    const char* content= doc.FirstChildElement( "Hello" )->GetText();
    log( "Hello,%s", content );


输出结果Hello,World


例子2:

hello.xml文件内容

<?xml version="1.0"?>

<scene name="Depth">

    <node type="camera">

        <eye>0 10 10</eye>

        <front>0 0 -1</front>

        <refUp>0 1 0</refUp>

        <fov>90</fov>

    </node>

    <node type="Sphere">

        <center>0 10 -10</center>

        <radius>10</radius>

    </node>

    <node type="Plane">

        <direction>0 10 -10</direction>

        <distance>10</distance>

    </node>

</scene>


xml解析:

    string file_path = FileUtils::getInstance()->fullPathForFilename("hello.xml");<span style="font-family: Menlo; font-size: 11px;">//如果新建的是lua项目中需要写</span><span style="font-family: Menlo;">("res/hello.xml");</span><span style="font-family: Menlo; font-size: 11px;">
</span>
    log("external file path = %s",file_path.c_str());


    XMLDocument document;
    document.LoadFile(file_path.c_str());
    XMLElement *scene=document.RootElement();
    XMLElement *surface=scene->FirstChildElement("node");
    while (surface)
    {
        XMLElement *surfaceChild=surface->FirstChildElement();
        const char* content;
        const XMLAttribute *attributeOfSurface = surface->FirstAttribute();

        log("%s:%s",attributeOfSurface->Name(),attributeOfSurface->Value());
        while(surfaceChild)
        {
            content=surfaceChild->GetText();
            surfaceChild=surfaceChild->NextSiblingElement();

            log("%s",content);
        }
        surface=surface->NextSiblingElement();
    }


输出结果:

cocos2d: type:camera

cocos2d: 0 10 10

cocos2d: 0 0 -1

cocos2d: 0 1 0

cocos2d: 90

cocos2d: type:Sphere

cocos2d: 0 10 -10

cocos2d: 10

cocos2d: type:Plane

cocos2d: 0 10 -10

cocos2d: 10


参考资料:

http://blog.csdn.net/educast/article/details/12908455

cocos2dx 3.1.1 用tinyxml2.h解释xml (C++)

标签:cocos2dx   3.1.1   xml解析   

原文地址:http://blog.csdn.net/u013174689/article/details/38846515

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!