Ошибка PugiXML - status_end_element_mismatch
Я использую pugiXML в одном из моих примеров (Android с JNI), и я пытаюсь разобрать файл 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 мг, так что это не может быть проблемой с памятью.
У кого-нибудь были такие проблемы? Если у кого-нибудь есть указатели?
Спасибо.
1 ответ
После тщательного анализа проблема была в информации при открытии файла. Так как я читал несколько файлов XML, я просто прочитал НЕПРАВИЛЬНЫЙ размер файла, который был меньше исходного файла, который я пытался прочитать.
PugiXML считал файл с размером из другого (меньшего) файла, и во время чтения файл был обрезан, и конечный родительский тег просто не закрывал строку - поэтому Pugixml сообщил об ошибке "Несоответствие начальных и конечных тегов".
При правильном размере разбор xml работает отлично. Я хочу поблагодарить Zeuxcg за огромную помощь в этом вопросе! Спасибо за помощь мне.