Недопустимый символ '&#x0' встреченный

Мне часто задают вопрос. AFAI исследования есть 2 ключа его худшего.

  • Если массив уже отсортирован, независимо от того, идет ли он по возрастанию или по убыванию , в дополнение к выбирается круг как минимальный (наименьший) или максимальный (наибольший) элемент списка , [2,3,4] или [4,3,2]
  • Если все элементы одинаковы. [2,2,2]
8
задан iOSDev 9 June 2009 в 04:59
поделиться

4 ответа

Я нашел решение,

Я просто обрезал его с помощью trim () и у меня это отлично сработало.

5
ответ дан 5 December 2019 в 07:13
поделиться

У вас есть нулевой символ в вашем потоке символов, то есть char (0), который недопустим в XML-документе. Если этого нет в исходной строке, то, скорее всего, это проблема декодирования символов.

14
ответ дан 5 December 2019 в 07:13
поделиться

В настоящее время ваш код вызывает getBytes () с использованием кодировки платформы по умолчанию - это очень редко бывает хорошей идеей. Узнайте, какова на самом деле кодировка данных, и используйте ее. (Скорее всего, это UTF-8.)

Если Blackberry включает DocumentBuilder.parse (InputSource) , это будет предпочтительнее:

DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance(); 
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
StringReader reader = new StringReader(xmlData);
try {
    Document doc = docBuilder.parse(xml); 
    doc.getDocumentElement().normalize();
} finally {
    reader.close();
}

Если это не сработает, используйте очень внимательно посмотрите на свою строку, например, вот так:

for (int i=0; i < xmlData.length(); i++) {
    // Use whatever logging you have on the Blackberry
    System.out.println((int) xmlData.charAt(i));
}

Возможно, проблема заключается в чтении ответа от сервера - если вы читаете его плохо, у вас могут быть нули Unicode (\ u0000) в вашей строке , который может не отображаться в выходных данных журнала / отладки, но может вызвать указанную вами ошибку.

РЕДАКТИРОВАТЬ: Я только что видел, что вы ' re получить данные base64 в первую очередь - так зачем преобразовывать их в строку, а затем обратно в байты? Просто декодируйте base64 в массив байтов, а затем используйте его как основу вашего ByteArrayInputStream . Тогда вам вообще не придется иметь дело с кодировкой текста.

4
ответ дан 5 December 2019 в 07:13
поделиться
InputStream xml = new ByteArrayInputStream(xmlData.getBytes());
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
xml.close();

Выше код, который я использую для синтаксического анализа.

0
ответ дан 5 December 2019 в 07:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: