【发布时间】:2012-12-20 19:02:41
【问题描述】:
我正在尝试在我的项目的资源文件夹中解析一个 xml 文档。该项目是一个 cocos2D 项目,我正在尝试创建某种类型的方法来解析 xml 文件以加载我的游戏的关卡。
解析文档的最佳方法是什么?举个例子就好了。
【问题讨论】:
标签: objective-c xcode cocos2d-iphone
我正在尝试在我的项目的资源文件夹中解析一个 xml 文档。该项目是一个 cocos2D 项目,我正在尝试创建某种类型的方法来解析 xml 文件以加载我的游戏的关卡。
解析文档的最佳方法是什么?举个例子就好了。
【问题讨论】:
标签: objective-c xcode cocos2d-iphone
你可以在 cocos2d 中使用任何 Objective-c XML 解析器
我建议你使用TBXML
但不要将数据保存在xml 中,而应将其保存到plist 并直接使用。
【讨论】:
如果 1)解析速度和 2) 从 xml 文件中检索数据的便利性很重要 3) 你不介意 C++ 接口 那么最适合您的解析器是开源的: http://code.google.com/p/pugixml/
pugixml 是一个轻量级的 C++ XML 处理库。它的特点: • 类 DOM 接口,具有丰富的遍历/修改能力 • 极快的非验证 XML 解析器,它从 XML 文件/缓冲区构造 DOM 树 • 用于复杂数据驱动树查询的 XPath 1.0 实现 • 完整的 Unicode 支持,带有 Unicode 接口变体和自动编码转换 该库非常便携且易于集成和使用。
我已经针对其他解析器测试了速度和内存使用情况,并在过去 5 年中一直使用它。 文档在这里:http://pugixml.googlecode.com/svn/tags/latest/docs/quickstart.html
【讨论】:
即使帖子很旧,我也在这里写下解决方案,以帮助将来像我这样的其他人。解决方法很简单: - 步骤 1:使用 FileUtils 读取文件内容 - 第 2 步:将文件内容解析为 tinyxml2(支持 我已经尝试在 cocos2d 3.8 中加载和读取 XML 文件并成功
#include "tinyxml2/tinyxml2.h"
auto s = FileUtils::getInstance()->getStringFromFile("data.xml");
tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();
tinyxml2::XMLError errorId = pDoc->Parse(s.c_str(), s.size());
if (errorId == 0) {
// Write your code here
}
data.xml 放在 Resource 文件夹中。
请阅读http://www.cocos2d-x.org/docs/manual/framework/native/v3/xml-parse/zhparse/zh 了解如何迭代 tinyxml2 XMLDocument。 请注意,您不能使用此链接中的教程从文件加载。它总是返回 ERROR_FILE_NOT_FOUND。
【讨论】: