Ошибка 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 за огромную помощь в этом вопросе! Спасибо за помощь мне.

Другие вопросы по тегам