无法在 c++ 中在安卓上加载和解析 xml 文件
Can't load and parse xml file on android in c++
我正在处理一个Cocos2dx C++项目,我正在尝试加载一个XML文件并用rapidxml解析它。
Win32构建与此代码配合使用非常好。
rapidxml::file<> xmlFile("myxml.xml");
xml_document<> doc; // character type defaults to char
doc.parse<0>(xmlFile.data()); // 0 means default parse flags
xml_node<> *main = doc.first_node(); //Get the main node that contains everything
这不适用于Android版本。很可能是因为找不到"myxml.xml"。所以我的解决方案是以不同的方式加载文件。
所以我尝试用这个替换xmlFile.data()。手机现在可以定位和读取数据,但我无法通过rapidxml进行解析。
const unsigned char* xmldata = CCFileUtils::sharedFileUtils()->getFileData("myxml.xml", "r", &tmpSize);
但我不知道如何解析它。
这是获取数据的另一种方式,但仍然不知道如何使用rapidxml进行解析。
std::string xmldata2 = CCFileUtils::sharedFileUtils()->getStringFromFile("myxml.xml");
有没有关于如何在rapidxml中解析这个问题的想法,或者关于如何解决这个问题的任何其他建议?
我是c++的新手,所以非常感谢您的帮助。
我使用过PugiXML,使用起来相对简单。文件读取为:
xml_document* doc = new xml_document;
unsigned char* pBuffer = NULL;
unsigned long bufferSize = 0;
std::string fullPath = CCFileUtils::sharedFileUtils()->fullPathFromRelativePath(filename);
pBuffer = CCFileUtils::sharedFileUtils()->getFileData(fullPath.c_str(), "r", &bufferSize);
if(bufferSize == 0)
{
CCLog("file failed to open");
delete doc;
}
xml_parse_result results = doc->load_buffer(pBuffer, bufferSize);
CCLog("filename: %s | result: %s | status: %d",filename, results.description(), results.status);
if(pBuffer)
{
delete [] pBuffer;
pBuffer = NULL;
}
xml_node mainNode = doc->child("main");
mainNode然后拥有解析文件的内容。
相关文章:
- std::原子加载和存储都需要吗
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- C++ 雷神库 - 使用资源加载器类时出现问题(不命名类型)
- 为什么加载SDF会导致Mobilizer创建闭环错误
- C++atioglxx.pdb未加载错误glBufferData OpenGL
- 如何使用tinyxml2从XML加载父实体和子实体
- 如何在C++中使用pybind11加载一个pickle python列表
- 系统.将数组移交给c#中动态加载的c++DLL时发生AccessViolationException
- 当我尝试加载内核模块时,如何修复C++中的这个 malloc() 错误?
- 树莓上的 Libtorch 无法加载 pt 文件,但在 ubuntu 上工作
- Python ctypes:不会按预期加载 dll
- 为什么会出现 gettnig 运行时错误:加载类型为"_Bit_type"(stl_bvector.h) 的空指针?
- 我的程序有一个保存配置文件的GUI,如何双击此配置文件以直接加载带有配置数据的GUI?
- 保存/加载大量短数组到二进制文件
- 使用 SDL2 和SDL_image C++加载图像
- 无法使用加载库卸载注入的 dll (C++)
- 是否有原子加载非原子值的函数?
- 将 bmp 文件加载到 TSpeedButton 中
- 如何使用Qt 3D库加载和显示搅拌机.obj源文件场景
- 加载与引用 .NET DLL 位于同一文件夹中的引用的 .NET DLL 时"Not found"异常