PugiXML error语言 - status_end_element_mismatch

PugiXML error - status_end_element_mismatch

本文关键字:end mismatch element status error 语言 PugiXML      更新时间:2023-10-16

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

  • 情况 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 毫克。我读过人们使用超过9毫克文件的成功pugiXML,所以它不可能是内存问题。

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

谢谢。

经过仔细分析,问题出在打开文件时的信息中。由于我正在读取多个XML文件,我只是读取了错误文件的大小,该大小小于我尝试读取的原始文件。

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

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