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

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

时间: 2024-10-31 10:50:49

cocos2dx 3.1.1 用tinyxml2.h解释xml (C++)的相关文章

cocos2d-x使用tinyxml2存储解析xml

我用的是2.1.4的cocos2d-x,里面自带有tinyxml2库. 导入头文件:#include "support/tinyxml2/tinyxml2.h" using namespace tinyxml2; 一:创建xml并保存 void TinyXmlDemo::createTinyXMLFile() { //储存XML文件的路径 std::string filePath = CCFileUtils::sharedFileUtils()->getWritablePath(

cocos2dx[3.x](4) ——浅析CCDeprecated.h

[唠叨] CCDeprecated.h中存放的都是2.x将要被抛弃的命名规范,主要包含类名.枚举类型. 虽然说2.x的这些命名规范被CCDeprecated.h保留了.但是为了彻底学习3.x的新特性,就必须要尽量不要使用2.x的命名规范. 有些变更其实已经在:cocos2dx[3.x](3)--大巨变3.x 中做了详细的说明了. [CCDeprecated.h] 1.主要的变更有以下几个方面 (1)去掉C++类的 "CC" 前缀 (2)去掉全局函数及常量的 "cc"

sax解释xml

xml文件内容 <?xml version="1.0" encoding="UTF-8" standalone="no"?><books> <book> <name>三国演义</name> <author>罗贯中</author> <price>50rmb</price> </book> <book> <nam

MSDN?中?对vector::erase()的解释.xml

pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9;font-style:italic;font-weight:bold;} .selfFuc{color:#f1f9be;} .bool{color:#69305e;} .condition{color:#628698;font-weight:bold;} .key{color:#e336b6;} .

获取bing图片并自动设置为电脑桌面背景(使用 URLDownloadToFile API函数)

众所周知,bing搜索网站首页每日会更新一张图片,张张漂亮(额,也有一些不合我口味的),特别适合用来做电脑壁纸. 我们想要将bing网站背景图片设置为电脑桌面背景的通常做法是: 上网,搜索bing 找到图片的下载链接,并下载之 将图片设置为桌面背景(也有部分浏览器支持直接在网页中右击图片设置为壁纸) 可能你还会删除下载下来的图片 作为一枚coder,你不会觉得麻烦嘛?至少需要三个步骤呢! So...我就用C++语言写了一个小程序,用于获取bing网站的图片,并将其设置为桌面背景.整个过程只需要点

7.数据本地化CCString,CCArray,CCDictionary,tinyxml2,写入UserDefault.xml文件,操作xml,解析xml

 数据本地化 A CCUserDefault 系统会在默认路径cocos2d-x-2.2.3\projects\Hello\proj.win32\Debug.win32下生成一个名为UserDefault.xml.所有的key皆为char *型,value类型为bool intfloat double std::string. 读操作 bool getBoolForKey(const char* pKey); bool getBoolForKey(const char* pKey, bool

Cocos2d-x 地图行走的实现:图论与Dijkstra

本文乃Siliphen原创,转载请注明出处:http://blog.csdn.net/stevenkylelee 本文的实现基于Cocos2d-x 3.2. 本文,我们最终实现的地图行走效果如下2图: 下面是2张屏幕录制的gif动画图,有点大,看不到的话,耐心等待一下,或者刷新页面试试. 地图行走用于现实的地图上. 1.什么是地图行走 很多游戏会有一个"世界"的概念.玩家在这个世界中行走,到达不同的地方去执行的任务,打怪或者是触发剧情等.下图是<锁链战记>的世界地图的截图.

Cocos2d-x xml解析

Cocos2d-x xml解析 Cocos2d-x 已经加入了tinyxml2用于xml的解析.3.0版本位于external/tinyxml2下.2.x版本位于cocos2dx/support/tinyxml2下. tinyxml2 Github地址:https://github.com/leethomason/tinyxml2 帮助文档地址:http://grinninglizard.com/tinyxml2docs/index.html 生成xml文档 引入头文件 #include "ti

Cocos2d-x 3.0 Json用法 Cocos2d-x xml解析

Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidjson/wiki:http://code.google.com/p/rapidjson/wiki/UserGuide 下面就通过实例代码讲解rapidjson的用法. 使用rapidjson解析json串 引入头文件 1 2 #include "json/rapidjson.h" #inc