我在我的一个示例中使用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在这件事上的巨大帮助!谢谢你帮助我。