ошибка синтаксического анализа Android на планшете, но не на эмуляторе

#android #parsing #exception

#Android #синтаксический анализ #исключение

Вопрос:

У меня есть это исключение:

org.xml.SAXParseException: неожиданный токен (позиция TEXT@1:2 …)

но это возникает только при запуске my .apk на планшетном ПК. Те же данные, которые обрабатываются на эмуляторе Android, никогда не вызывают этого исключения и работают на 100%. Есть идеи?

Вот код, который выдает исключение:

 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource inputSource = new InputSource();
inputSource.setCharacterStream(new StringReader(xmlData));
Document doc = db.parse(inputSource); 
  

И вот часть из файла:

 <Results> <Result title="08 07 2011"><Field title="blah blah" value="blah blah" /> </Result></Results>
  

Ответ №1:

Может быть, кодировка по умолчанию отличается? Есть ли в XML кодировка?

Комментарии:

1. Язык, который я использую в эмуляторе, — греческий. Язык в планшете — английский. Считаете ли вы, что греческие символы, записанные в файле xml, могут вызвать это?

2. Действительно, файл был создан позже и был закодирован в ANSI. Спасибо!

3. Да, я действительно так думаю. В какой кодировке были исходные данные? Правильно ли строка xmlData содержит греческие символы? Попробуйте отследить позицию до символов исходной строки, проверьте, случайно ли она греческая.

4. Это была кодировка всего файла, а не греческих символов. Другой xml был создан правильно как utf-8. Проблемный файл был создан как ansi, так что это было источником проблемы.