Атрибут синтаксического анализа XmlPullParserException, который содержит сущность
Я использую kXML2 в устаревшем проекте JavaME. Я получаю XML, где некоторые атрибуты содержат закодированные объекты. Когда я получаю это значение атрибута с помощью вызова:
parser.getAttributeValue
Это бросает исключение:
XmlPullParserException: unresolved
Я скачал последнюю версию этого парсера, но он все еще показывает это поведение.
Если я удалю проблемную строку из XML, то ошибок не будет.
1 ответ
Хорошо, вот что происходит:
Парсер должен декодировать сущности в атрибутах, если вы не установили это свойство:
parser.setFeature(KXmlParser.FEATURE_PROCESS_DOCDECL, true);
Но эта реализация вызывает исключение при вызове этой строки. Хорошо, поэтому я отладил исходный код парсера и обнаружил, что у этой реализации pull-парсера есть проблемы с сущностями, которые не очень распространены.
Поэтому я должен надуть карту замены сущности анализатора моими собственными "нечетными" сущностями, чтобы она работала, например так:
parser.defineEntityReplacementText("Ntilde", "Ñ");
И тогда все работает нормально.