Ошибка синтаксического анализа XML на ë - PullRequest
2 голосов
/ 07 февраля 2012

у меня сбой в XML-файле.это происходит на ë, в данном случае belgië (голландский для бельгии).

Я занят поиском ответа, но просто не могу найти решение.У кого-нибудь есть блестящая идея?

Я использую синтаксический анализатор саксофонов под Android.ошибка: org.apache.harmony.xml.ExpatParser $ ParseException: в строке 2, столбец 204: неправильно сформированный источник XML: http://biohorma.weatheronyoursite.com/villadm_hooikoortsverwachting_be.xml

Спасибо заранее за помощь

Сторонаобратите внимание, я получаю данные через поток, является ли единственной возможностью установить для этого потока временное значение, заменить недопустимый символ действительным и создать из него новый поток, или вы можете добавить что-либо в поток для этого?

Ответы [ 4 ]

4 голосов
/ 07 февраля 2012

Кажется, вам следует использовать конструктор String (byte [] bytes, String enc) , предполагая, что сервер отправляет вам кодированный в UTF-8:

String properXml = new String(byteArrayIReceivedFromServer, "UTF-8");
2 голосов
/ 07 февраля 2012

Проблема не в парсере - он работает правильно, а в том, какой код отправляет XML. ë необходимо закодировать и передать как ë. То же самое должно быть сделано и для других акцентированных символов, амперсандов и угловых скобок.

1 голос
/ 07 февраля 2012

Вы должны заменить специальные символы в xml, я думаю ..

См. Полный список символов здесь: http://www.w3schools.com/tags/ref_entities.asp

это говорит о том, что ваш ум выглядит как: Ë Ë Ë capital e, umlaut mark

Тогда также для краткое объяснение , если вам хочется читать.

Надеюсь, это поможет.

0 голосов
/ 08 февраля 2012

Сервер отправляет эти заголовки:

Content-Type: text/xml
Content-Length: 124512

Поскольку для типа контента не указана кодировка, обычно правильным предположением является US_ASCII. Тем не менее, полезная нагрузка XML, похоже, кодируется в ISO-8859-1

<?xml version="1.0" encoding="iso-8859-1"?>

и 'ë' кодируется как 0xEB (235). Серверы очень часто кодируют текстовую полезную нагрузку в ISO-8859-1, поэтому с этим просто нужно иметь дело.

Я предполагаю, что если вы напрямую обработаете синтаксический анализатор байтовым потоком, он соответствующим образом обнаружит кодировку. Если вы используете поток символов (не рекомендуется), обязательно укажите правильную кодировку.

...