Мне часто задают вопрос. AFAI исследования есть 2 ключа его худшего.
- Если массив уже отсортирован, независимо от того, идет ли он по возрастанию или по убыванию , в дополнение к выбирается круг как минимальный (наименьший) или максимальный (наибольший) элемент списка , [2,3,4] или [4,3,2]
- Если все элементы одинаковы. [2,2,2]
Я нашел решение,
Я просто обрезал его с помощью trim () и у меня это отлично сработало.
У вас есть нулевой символ в вашем потоке символов, то есть char (0), который недопустим в XML-документе. Если этого нет в исходной строке, то, скорее всего, это проблема декодирования символов.
В настоящее время ваш код вызывает 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
. Тогда вам вообще не придется иметь дело с кодировкой текста.
InputStream xml = new ByteArrayInputStream(xmlData.getBytes());
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(xml);
doc.getDocumentElement().normalize();
xml.close();
Выше код, который я использую для синтаксического анализа.