0

我在我的一个示例(带有 JNI 的 Android)中使用 pugiXML,我试图解析一个用中文或日文编写的 XML 文件,我总是得到

  • case status_end_element_mismatch:返回“起始标签不匹配”;几乎总是在 XML 文件附近或末尾的某个随机行上。

  • 我得到解析结果

pugi::xml_document doc; pugi::xml_parse_result result = doc.load(File._Buffer); if (result){ __android_log_print(ANDROID_LOG_INFO, "MyExample", "XML [ %s ] ;parsed without errors, attr value:[ %s ] ",File._Buffer , doc.child("node").attribute("attr").value()); else { __android_log_print(ANDROID_LOG_INFO, "MyExample", "Error description: %s" , result.description()); __android_log_print(ANDROID_LOG_INFO, "MyExample", "Error offset: %ul" , result.offset); }

我的英语 XML 工作得很好。

我已经使用各种验证器甚至“逐行手动”检查了 XML 文件,并且它没有丢失任何标签,并且所有验证器都确认它是有效的 XML 文件。

我的文件不超过 1 毫克。我读过有人成功使用了 pugiXML 超过 9 mg 的文件,所以这不是内存问题。

有人遇到过这种问题吗?如果有人有一些指示?

谢谢你。

4

1 回答 1

0

经过仔细分析,问题出在打开文件时的信息中。因为我正在读取多个 XML 文件,所以我只是读取了 WRONG 文件的大小,它比我试图读取的原始文件小。

pugiXML 从另一个(较小的)文件中读取具有大小的文件,在读取文件时,文件被截断,结束父标签根本没有关闭该行 - 因此 Pugixml 报告错误“起始标签不匹配”。

当给定正确的大小时,xml 解析效果很好。我要感谢 Zeuxcg 在这件事上的巨大帮助!感谢你们对我的帮助。

于 2015-06-22T19:19:39.517 回答