#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, так что это было источником проблемы.