无需繁琐的解析XML,cocos2d-x 3.x中最简单方便粗暴有效的数据方法-plist
2015-04-02 10:50
706 查看
转载请注明来自:blog.csdn.net/wjlpld
好吧,看网上各种解析XML,CSV等等一大坨东西,解析解析。。解析的头都大了啊。。。。其实在cocos2dx中存储数据最简单直接粗暴有效的办法就是plist,虽然网上各种关于速度的争论,不过对于一个程序来说,最简单的才是最好用的,更多的精力放到代码优化上
plist是特殊格式的XML,使用起来非常的简单高效,cocos2dx原生支持的解析格式,比如我们下面这个plist就是最简单的plist文件,plist文件可以直接用xcode进行创建
xcode内创建的样式:
实际的后台生成代码如下:
看上去是不是灰常的简单,其中要注意的是根节点必须是dictionary或者是arrary
在实际中使用的代码如下:
次奥,就。。。。。。这么几行代码?????
是的就这么几行代码就行了。。什么解析XML啊,解析json。玩命搞了半天。解析你XXXXX(此处被和谐)╮(╯_╰)╭╮(╯_╰)╭
好的,再给大家上一个全套的代码
PLIST文件:
实际使用代码:
特别提示:
(1)根节点为Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 读取为一个ValueMap 。
(2)根节点为Array :使用 FileUtils::getInstance()->getValueVectorFromFile(); 读取为一个ValueVector 。
另外,别搞需要坑爹解析的XML了吧,哈哈
好吧,看网上各种解析XML,CSV等等一大坨东西,解析解析。。解析的头都大了啊。。。。其实在cocos2dx中存储数据最简单直接粗暴有效的办法就是plist,虽然网上各种关于速度的争论,不过对于一个程序来说,最简单的才是最好用的,更多的精力放到代码优化上
plist是特殊格式的XML,使用起来非常的简单高效,cocos2dx原生支持的解析格式,比如我们下面这个plist就是最简单的plist文件,plist文件可以直接用xcode进行创建
xcode内创建的样式:
实际的后台生成代码如下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Skill001</key> <dict> <key>ID</key> <string>2001</string> <key>StartFrame</key> <integer>1</integer> <key>EndFrame</key> <integer>50</integer> </dict> <key>Skill002</key> <dict> <key>ID</key> <string>2002</string> <key>StartFrame</key> <integer>60</integer> <key>EndFrame</key> <integer>80</integer> </dict> <key>Skill003</key> <dict> <key>ID</key> <string>2003</string> <key>StartFrame</key> <integer>90000</integer> <key>EndFrame</key> <integer>100000</integer> </dict> </dict> </plist>
看上去是不是灰常的简单,其中要注意的是根节点必须是dictionary或者是arrary
在实际中使用的代码如下:
<pre name="code" class="cpp"> auto dic = FileUtils::getInstance()->getValueMapFromFile("AttackInfo.plist"); ValueMap& dicSkill01 = dic["Skill001"].asValueMap(); log("%s",dicSkill01["ID"].asString().c_str()); log("%d",dicSkill01["StartFrame"].asInt());
次奥,就。。。。。。这么几行代码?????
是的就这么几行代码就行了。。什么解析XML啊,解析json。玩命搞了半天。解析你XXXXX(此处被和谐)╮(╯_╰)╭╮(╯_╰)╭
好的,再给大家上一个全套的代码
PLIST文件:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>dict</key> <dict> <key>name</key> <string>Alice</string> <key>age</key> <string>20</string> </dict> <key>array</key> <array> <integer>0</integer> <integer>1</integer> <integer>2</integer> </array> <key>bool</key> <true/> <key>data</key> <data></data> <key>date</key> <date>2015-02-16T16:47:11Z</date> <key>number</key> <integer>123456</integer> <key>string</key> <string>hello world!</string> </dict> </plist> //
实际使用代码:
// // 文件路径 std::string path = "/soft/cocos2d-x-3.4/projects/Demo34/Resources/testPlist.plist"; // 读取plist文件 // 以根节点为字典Dictionary为例 // 根节点为字典Dictionary , 读取为一个ValueMap ValueMap plist = FileUtils::getInstance()->getValueMapFromFile(path); // 若根节点为数组Array , 读取为一个ValueVector // ValueVector plist = FileUtils::getInstance()->getValueVectorFromFile(path); // 获取数据 // 读取 "string" CCLOG("string = %s", (plist["string"].asString()).c_str()); // 读取 "dict" , 也是一个字典ValueMap ValueMap& dict = plist["dict"].asValueMap(); CCLOG("name = %s", (dict["name"].asString()).c_str()); CCLOG("age = %s", (dict["age"].asString()).c_str()); // 读取 "array" , 是一个数组ValueVector ValueVector& array = plist["array"].asValueVector(); for (int i = 0; i < array.size(); i++) { Value& value = array[i]; CCLOG("%d", value.asInt()); } //
特别提示:
(1)根节点为Dictionary :使用 FileUtils::getInstance()->getValueMapFromFile(); 读取为一个ValueMap 。
(2)根节点为Array :使用 FileUtils::getInstance()->getValueVectorFromFile(); 读取为一个ValueVector 。
另外,别搞需要坑爹解析的XML了吧,哈哈
相关文章推荐
- 学习笔记之cocos2d-x2.1.1实现修改plist文件数据,用TinyXml解析XML
- 学习笔记之cocos2d-x2.1.1实现修改plist文件数据,用TinyXml解析XML
- java通过url获取页面数据 java解析xml 基金净值接口使用方法
- c#: 解析json, 转成xml, 简单方便
- QT XML文档的解析 QXmlStreamReader, DOM,SAX 三种解析方法 简单示例
- 解析XML,将数据显示在treeview上,使用简单工厂模式
- 二、J2ME简单的行情软件--得到数据(解析xml)
- 一个解析XML数据的简单Demo(以KissXml为例)
- IOS 详解NSXMLParser方法解析XML数据方法
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据&CCMutableDictionary使用与注意!
- 有关TinyXML使用的简单总结:来解析XML数据
- 一个简单的xml类,可以解析和生成xml文件数据
- SAX方式解析XML的简单方法
- 使用Xml类下的newPullParser ()、newSerializer ()方法,解析xml数据和序列化生成xml数据
- iOS 详解NSXMLParser方法解析XML数据方法
- cocos2d-x 当中访问WebServer服务器的方法,以及解析XML文件.
- 【iOS-cocos2d-X 游戏开发之九】Cocos2dx利用CCSAXParser解析xml数据 推荐
- dom4j解析XML简单方法
- iOS 详解NSXMLParser方法解析XML数据方法
- Kissxml 解析 XML数据的简单Demo