我从网站上加载了一个xml文档。 然后我尝试用pugixml解析它。
ParseXml::parseTrainsXml(char source[]) {
__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [ %s ]", source);
size_t size = sizeof(source);
pugi::xml_document doc;
pugi::xml_parse_result result = doc.load_buffer(source, size);
__android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [ %s ]",
result.description());
}
当我尝试加载它时,我收到以下错误:“解析文档声明/处理指令时出错”。所以这并没有给我很多帮助,所以我试着查一查。 http://pugixml.googlecode.com/svn/tags/latest/docs/manual/loading.html
status_bad_pi表示由于不正确的文档声明/处理指令而停止解析
所以基本上,我不知道它为什么不起作用。当我声明相同的xml时:
const char source[] = "my xml here";
如果我这样声明它确实有效。谁知道什么可能出错?
答案 0 :(得分:1)
size_t size = sizeof(source);
此行不正确。 source被视为指向char的指针,因此sizeof始终为4(或8)=>你只得到解析的前4/8字节。由于您将不完整的缓冲区传递给pugixml(可能是“<?xm”),因此pugixml将其标记为不正确。
您必须将正确的缓冲区大小传递给您的函数,或者,如果保证缓冲区为空终止(不确定如何获取缓冲区),则可以使用doc.load(source)而不是doc。 load_buffer(来源,大小)。