Атрибут синтаксического анализа XmlPullParserException, который содержит сущность

Я использую kXML2 в устаревшем проекте JavaME. Я получаю XML, где некоторые атрибуты содержат закодированные объекты. Когда я получаю это значение атрибута с помощью вызова:

parser.getAttributeValue

Это бросает исключение:

XmlPullParserException: unresolved

Я скачал последнюю версию этого парсера, но он все еще показывает это поведение.

Если я удалю проблемную строку из XML, то ошибок не будет.

1 ответ

Решение

Хорошо, вот что происходит:

Парсер должен декодировать сущности в атрибутах, если вы не установили это свойство:

parser.setFeature(KXmlParser.FEATURE_PROCESS_DOCDECL, true);

Но эта реализация вызывает исключение при вызове этой строки. Хорошо, поэтому я отладил исходный код парсера и обнаружил, что у этой реализации pull-парсера есть проблемы с сущностями, которые не очень распространены.

Поэтому я должен надуть карту замены сущности анализатора моими собственными "нечетными" сущностями, чтобы она работала, например так:

parser.defineEntityReplacementText("Ntilde", "Ñ");

И тогда все работает нормально.

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