Android - SaxParser 错误 : ParseException: At line 1, 第 0 列:格式不正确(无效 token )

标签 android xml saxparser saxparseexception parseexception

我在尝试解析一些 XML 时遇到以下异常:

org.apache.harmony.xml.ExpatParser$ParseException: At line 1, column 0: not well-formed (invalid token)

主要问题是,这只发生在 Android 2.2 或 2.3 设备中,但最奇怪的是,我第一次解析响应时没问题,但接下来的所有尝试都给我解析异常。

我的代码如下:

        URL url = new URL("http://m.ideasmusik.com/rss/?ct=mx");
        SAXParserFactory spf = SAXParserFactory.newInstance();
        SAXParser sp = spf.newSAXParser();
        //InputSource is = new InputSource("http://m.ideasmusik.com/rss/?ct=mx");
        //is.setEncoding(HTTP.UTF_8);   

        // Parse content
        MusicRSSParser parser = new MusicHandler.MusicRSSParser(); //DefaultHandler
        XMLReader xr = sp.getXMLReader();
        xr.setContentHandler(parser);
        InputSource in = new InputSource(url.openStream());//is.getByteStream());
        in.setEncoding(HTTP.UTF_8);
        xr.parse(in);

XML 是 UTF-8(我读过,编码不正确是一个常见问题)。

猜猜出了什么问题?我认为这可能与我的处理程序有关,但它在我的逻辑应用之前就崩溃了,就在 startDocument() 方法之后。

我尝试使用 Url 而不是 InputStream 得到相同的结果。

编辑

如果我转到“应用程序管理”并清除应用程序缓存,那么它工作正常,这是第一次。它如何影响解析??

最佳答案

知道了!

问题是RSS有问题!

不是每个浏览器都显示它(当他们用颜色格式化它时,他们消除了这个问题),但源代码开始是这样的:

<?xml version=\"1.0\" encoding=\"UTF-8\"?>
      <rss version=\"2.0\">
          <channel>
               <title>Top Canciones</title>
               <link>m.ideasmusik.com/rss/?ct=mx&</link> ...

问题是 XML 不能有 & 符号而不被转义。

所有其他符号在文档中都被转义了,但我认为他们错过了那个符号,因为它在链接标记中而不是主要内容。

不知何故,在第一次运行时,SAX 解析器会忽略它..

我所做的(虽然 RSS 是固定的)是获取字符串响应并在解析 XML 之前手动删除它。我知道这是一个糟糕的解决方案,但它是目前最快、最简单的解决方案。

关于Android - SaxParser 错误 : ParseException: At line 1, 第 0 列:格式不正确(无效 token ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18646845/

相关文章:

java - SAX 解析器具有相似的父标签和子标签

Android复杂按钮形状

xml - XSLT、XPath 和 InStr

c# - 将 XAttribute 插入到指定位置的现有 XElement

Java SAX 无法正确解析

当节点内部文本为html时,Java解析xml文件

android - 无法在手机上运行应用程序进行测试 : Adb connection Error:An existing connection was forcibly closed by the remote host

android - android galaxy的真实设备数据库文件为空点异常

android - 将自定义对象发送到 intent android

java - XML 解析器示例