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;
usingnamespacestd;
例子1:
<?xml version="1.0"?>
<Hello>World</Hello>
xml解释:
- stringfile_path=FileUtils::getInstance()->fullPathForFilename("testset.xml");//如果新建的是lua项目中需要写("res/text.xml");
- log("externalfilepath=%s",file_path.c_str());
- XMLDocumentdoc;
- //加载文件
- doc.LoadFile(file_path.c_str());
- constchar*content=doc.FirstChildElement("Hello")->GetText();
- log("Hello,%s",content);
输出结果Hello,World
例子2:
<?xml version="1.0"?>
<scenename="Depth">
<nodetype="camera">
<eye>0 10 10</eye>
<front>0 0 -1</front>
<refUp>0 1 0</refUp>
<fov>90</fov>
</node>
="Sphere">
<center>0 10 -10</center>
<radius>10</radius>
</node>
<nodetype="Plane">
<direction>0 10 -10</direction>
<distance>10</distance>
</scene>
xml解析:
- stringfile_path=FileUtils::getInstance()->fullPathForFilename("hello.xml");
- XMLDocumentdocument;
- document.LoadFile(file_path.c_str());
- XMLElement*scene=document.RootElement();
- XMLElement*surface=scene->FirstChildElement("node");
- while(surface)
- {
- XMLElement*surfaceChild=surface->FirstChildElement();
- char*content;
- constXMLAttribute*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