这可能是字符编码问题。
如您所见,无效令牌错误指向第4行。
在此行中,您可以找到一个急流( Meteorología )和一个波浪号( España )。XML标头显示 ISO-8859-15
编码值。由于它比UTF或ISO-8859-1编码少见,因此当SAXParser连接并尝试使用系统默认字符集将字节内容转换为char时,可能会导致错误。
然后,您需要告诉SAXParser使用哪个字符集。一种方法是将InputSource而不是URL传递给parse方法。举个例子:
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);编辑: 似乎Android
VM不支持此编码,引发
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声明来选择适当的编码。



