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

来源:互联网 发布:淘宝店铺等级在哪里看 编辑:程序博客网 时间:2024/05/20 01:46

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解释:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. string file_path = FileUtils::getInstance()->fullPathForFilename("testset.xml");//如果新建的是lua项目中需要写("res/text.xml");  
  2. log("external file path = %s",file_path.c_str());  
  3. XMLDocument doc;  
  4. //加载文件  
  5. doc.LoadFile(file_path.c_str());  
  6. const char* content= doc.FirstChildElement( "Hello" )->GetText();  
  7. 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解析:

[cpp] view plaincopy在CODE上查看代码片派生到我的代码片
  1. string file_path = FileUtils::getInstance()->fullPathForFilename("hello.xml");  
  2. log("external file path = %s",file_path.c_str());  
  3.   
  4.   
  5. XMLDocument document;  
  6. document.LoadFile(file_path.c_str());  
  7. XMLElement *scene=document.RootElement();  
  8. XMLElement *surface=scene->FirstChildElement("node");  
  9. while (surface)  
  10. {  
  11.     XMLElement *surfaceChild=surface->FirstChildElement();  
  12.     const char* content;  
  13.     const XMLAttribute *attributeOfSurface = surface->FirstAttribute();  
  14.   
  15.     log("%s:%s",attributeOfSurface->Name(),attributeOfSurface->Value());  
  16.     while(surfaceChild)  
  17.     {  
  18.         content=surfaceChild->GetText();  
  19.         surfaceChild=surfaceChild->NextSiblingElement();  
  20.   
  21.         log("%s",content);  
  22.     }  
  23.     surface=surface->NextSiblingElement();  
  24. }  


输出结果:

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

0 0
原创粉丝点击