Cocos2dx引擎笔记——Cocos2d-x xml解析
来源:互联网 发布:淘宝官方邀请我上活动 编辑:程序博客网 时间:2024/05/18 01:30
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 "tinyxml2/tinyxml2.h"using namespace tinyxml2;
xml文档生成
void HelloWorld::makeXML(const char *fileName){std::string filePath = FileUtils::getInstance()->getWritablePath() + fileName;XMLDocument *pDoc = new XMLDocument();//xml 声明(参数可选)XMLDeclaration *pDel = pDoc->NewDeclaration("xml version=\"1.0\" encoding=\"UTF-8\"");pDoc->LinkEndChild(pDel);//添加plist节点XMLElement *plistElement = pDoc->NewElement("plist");plistElement->SetAttribute("version", "1.0");pDoc->LinkEndChild(plistElement);XMLComment *commentElement = pDoc->NewComment("this is xml comment");plistElement->LinkEndChild(commentElement);//添加dic节点XMLElement *dicElement = pDoc->NewElement("dic");plistElement->LinkEndChild(dicElement);//添加key节点XMLElement *keyElement = pDoc->NewElement("key");keyElement->LinkEndChild(pDoc->NewText("Text"));dicElement->LinkEndChild(keyElement);XMLElement *arrayElement = pDoc->NewElement("array");dicElement->LinkEndChild(arrayElement);for (int i = 0; i<3; i++) { XMLElement *elm = pDoc->NewElement("name"); elm->LinkEndChild(pDoc->NewText("Cocos2d-x")); arrayElement->LinkEndChild(elm);}pDoc->SaveFile(filePath.c_str());pDoc->Print();delete pDoc;}
打印结果
<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><!--this is xml comment--><dic> <key>Text</key> <array> <name>Cocos2d-x</name> <name>Cocos2d-x</name> <name>Cocos2d-x</name> </array></dic></plist>
上面代码使用tinyxml简单生成了一个xml文档。
解析xml
下面我们就来解析上面创建的xml文档
引入头文件
#include "tinyxml2/tinyxml2.h"using namespace tinyxml2;
xml解析
void HelloWorld::parseXML(const char *fileName){std::string filePath = FileUtils::getInstance()->getWritablePath() + fileName;XMLDocument *pDoc = new XMLDocument();XMLError errorId = pDoc->LoadFile(filePath.c_str());if (errorId != 0) { //xml格式错误 return;}XMLElement *rootEle = pDoc->RootElement();//获取第一个节点属性const XMLAttribute *attribute = rootEle->FirstAttribute();//打印节点属性名和值log("attribute_name = %s,attribute_value = %s", attribute->Name(), attribute->Value());XMLElement *dicEle = rootEle->FirstChildElement("dic");XMLElement *keyEle = dicEle->FirstChildElement("key");if (keyEle) { log("keyEle Text= %s", keyEle->GetText());}XMLElement *arrayEle = keyEle->NextSiblingElement();XMLElement *childEle = arrayEle->FirstChildElement();while ( childEle ) { log("childEle Text= %s", childEle->GetText()); childEle = childEle->NextSiblingElement();}delete pDoc;}
在节点解析过程中,注意对获取到的节点进行判空处理。
解析结果打印
cocos2d: attribute_name = version,attribute_value = 1.0cocos2d: keyEle Text= Textcocos2d: childEle Text= Cocos2d-xcocos2d: childEle Text= Cocos2d-xcocos2d: childEle Text= Cocos2d-x
小结
上面的简单示例,演示了如何使用tinyxml进行xml文档生成和解析。更多详细的帮助请参考 tinyxml帮助文档http://grinninglizard.com/tinyxml2docs/index.html
声明:本文是对http://www.cocos.com/帮助文档的阅读笔记。
0 0
- Cocos2dx引擎笔记——Cocos2d-x xml解析
- Cocos2dx引擎笔记——Cocos2d-x 3.0 Json用法
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- 【Cocos2d-x游戏引擎开发笔记(25)】XML解析
- Cocos2d-x引擎解析
- Cocos2d-X 学习笔记 17 Cocos2dx Jason数据解析
- Cocos2d-x学习笔记(十三)—— 数据解析(json/xml)
- cocos2dx概要及开发技术—认识cocos2d-x游戏引擎
- cocos2d-x xml解析
- Cocos2d-x xml解析
- 用cocos2d-x 解析xml
- cocos2d-x解析xml文件
- 用cocos2d-x 解析xml
- cocos2d-x 中xml解析
- 【Cocos2d-x 021】 xml解析
- cocos2dx 3.x 物理引擎学习笔记
- OSX10.11 (EI Capitan)下挂载NTFS外接盘(免费方法)
- Android高效加载大图、多图解决方案
- url应用
- 今天终于有了自己的博客
- 小紫书 习题 3-7(UVA 1368) DNA序列(DNA Consensus String)
- Cocos2dx引擎笔记——Cocos2d-x xml解析
- 抽象类和接口小结
- MVC程序设计思想
- 格雷码递归算法
- 组件之间的信使----Intent
- php时间戳与字符串的相互转换
- Cocos2dx引擎笔记——如何让Java和C++接口互相调用:JNI使用指南
- 时间序列模型之相空间重构
- LeetCode(61) Rotate List