Cocos2dx 3.0 xml文档的读取与调用
2014-04-18 10:58
375 查看
本文源自:http://www.bkjia.com/qtjc/736121.html
感谢原作者!
前天有人问我beta2 要如何读取xml文档,我刚要说用array的相关接口去读取,才想起beta之后早没有array这玩意了。
那么既然之前是用arry读取,那么现在应该是可以用 容器 来读取吧?
最后我找到了这么两个函数接口:
那么,具体该怎么用呢。我之前有写过一篇博客,就是从xml文档读取中文的,
接下来就将那篇博客的代码移植到3.0 beta上。我用ValueVector的方法。
传送门:http://blog.csdn.net/start530/article/details/18740733
假设有一个名为 label.xml 的文档,内容如下:
步骤如下:
1、读取xml文档,将读取到的内容放到ValueVector上。
2、通过id获取info里的内容;
3、将info里的内容显示到label中。
代码实现:1、读取
这里有两个要点,一个是ValueVector,这是啥东东?我只能回答在,在CCValue.h里,有这么一行代码 :
恩,人艰不拆;
第二个要点是用 getValueVectorFromFile(FileName)读取xml文档...
2、提取数据
首先提取 id ,因为id和它对应的值是一对键值,所以可以用Map来存储它们:
放到Map中即可用Map的方法读取键为”id"的值是多少:
最后就是做出判断,如果id的值为10的话,那么提取相应的键为 info 的值:
恩,过程就是这样;
3、将整理好的代码贴出来
如果有对Vector 、 Map使用不大了解的人,可以参考我之前写的博客:
Vector:http://blog.csdn.net/start530/article/details/19170853
Map:http://blog.csdn.net/start530/article/details/19284301
感谢原作者!
前天有人问我beta2 要如何读取xml文档,我刚要说用array的相关接口去读取,才想起beta之后早没有array这玩意了。
那么既然之前是用arry读取,那么现在应该是可以用 容器 来读取吧?
最后我找到了这么两个函数接口:
ValueVector p_vec = FileUtils::getInstance()->getValueVectorFromFile("label.plist"); ValueMap p_map = FileUtils::getInstance()->getValueMapFromFile("label.xml");
那么,具体该怎么用呢。我之前有写过一篇博客,就是从xml文档读取中文的,
接下来就将那篇博客的代码移植到3.0 beta上。我用ValueVector的方法。
传送门:http://blog.csdn.net/start530/article/details/18740733
假设有一个名为 label.xml 的文档,内容如下:
id 10 info 风一般的男纸 id 20 info 注定是寂寞的
步骤如下:
1、读取xml文档,将读取到的内容放到ValueVector上。
2、通过id获取info里的内容;
3、将info里的内容显示到label中。
代码实现:1、读取
ValueVector txt_vec = FileUtils::getInstance()->getValueVectorFromFile("label.xml");
这里有两个要点,一个是ValueVector,这是啥东东?我只能回答在,在CCValue.h里,有这么一行代码 :
typedef std::vector ValueVector;
恩,人艰不拆;
第二个要点是用 getValueVectorFromFile(FileName)读取xml文档...
2、提取数据
首先提取 id ,因为id和它对应的值是一对键值,所以可以用Map来存储它们:
auto txt_map = txt_vec.at(0).asValueMap();
放到Map中即可用Map的方法读取键为”id"的值是多少:
int id_int = txt_map.at("id").asInt();
最后就是做出判断,如果id的值为10的话,那么提取相应的键为 info 的值:
if(id_int == 10) { auto label_str = txt_map.at("info").asString(); }
恩,过程就是这样;
3、将整理好的代码贴出来
ValueVector txt_vec = FileUtils::getInstance()->getValueVectorFromFile("label.xml");//读取xml文档,放入ValueVector中 for( auto& e : txt_vec) { auto txt_map = e.asValueMap();//将键值转化成Map格式,放入txt_map中 int id_int = txt_map.at("id").asInt();//获取id if(10 == id_int) { auto label_str = txt_map.at("info").asString();//获取info的值 auto label1 = LabelTTF::create(label_str,"Arial",25); label1->setPosition(Point(160,425)); this->addChild(label1,2); } else if(20 == id_int) { auto label_str = txt_map.at("info").asString(); auto label1 = LabelTTF::create(label_str,"Arial",25); label1->setPosition(Point(160,400)); this->addChild(label1,2); } }
如果有对Vector 、 Map使用不大了解的人,可以参考我之前写的博客:
Vector:http://blog.csdn.net/start530/article/details/19170853
Map:http://blog.csdn.net/start530/article/details/19284301
相关文章推荐
- Cocos2dx 3.0 过渡篇(十一) xml文档的读取与调用
- Cocos2dx 3.0 提高篇(十一) xml文档的读取与调用
- Cocos2dx 3.0 过渡篇(十一) xml文档的读取与调用
- cocos2dx中调用TinyXml读取xml配置文件 || cocos2d-x 中跨平台tinyxml读取xml文件方式
- JavaScript 解析读取XML文档 实例代码
- unity3D读取XML文档信息
- 读取Xml文档的元素和属性
- Java 利用DOM读取XML文档的例子
- 利用代码读取XML文档
- org.xml.sax.SAXParseException; lineNumber: 18; columnNumber: 41; schema_reference无法读取方案文档 'http://co
- C#读取XML文档使用XMLTextReader类浅析
- cocos2dx读取xml详细解析
- JS调用Webservice并读取返回XML内容
- 在.NET环境下的XML应用简介(1)——使用XmlTextReader读取XML文档
- 利用代码读取XML文档
- C#来创建和读取XML文档
- 数据库操作类与Xml文档操作(保存/读取Connectionstring)
- 二 cocos2dx 之 解析xml文件数据并在程序中调用,存储
- spring的xml中注册bean的时候报错1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>
- C#来创建和读取XML文档