Это может быть проблема кодировки символов.
Как видите, ошибка неверного токена указывает на строку # 4.
В этой строке вы можете найти острый ( Meteorología ) и тильду ( España ).
Заголовок XML показывает значение кодировки ISO-8859-15 . Поскольку он менее распространен, чем кодировки UTF или ISO-8859-1, это может привести к ошибке, когда SAXParser подключается и пытается преобразовать байтовый контент в символы, используя системную кодировку по умолчанию.
Затем вам нужно сообщить SAXParser, какую кодировку использовать. Один из способов сделать это - передать InputSource вместо URL-адреса методу разбора. Как пример:
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser = factory.newSAXParser();
InputSource is = new InputSource(url);
is.setEncoding("ISO-8859-15");
DefaultHandler lxmlr=new LibraryXMLReader() ;
sp.parse(is, lxmlr);
EDIT:
Похоже, что виртуальная машина Android не поддерживает эту кодировку, исключая org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: unknown encoding
.
Как ISO-8859-15, он в основном совместим с ISO-8859-1, за исключением некоторых конкретных символов (как вы можете видеть здесь ), обходной путь - это изменение значения ISO-8859-15
на ISO-8859-1
в setEncoding метод, заставляющий синтаксический анализатор использовать другую, но совместимую кодировку кодировки:
is.setEncoding("ISO-8859-1");
Как представляется, поскольку Android не поддерживает объявленную кодировку, он использует ее по умолчанию (UTF-8), и, следовательно, анализатор не может использовать декларацию XML для выбора кодировки apropiate.