正如问题所述,我想知道如何追查这种错误的原因。
在我对这个错误的研究中,我发现了使用输入流的各种事情。当它被调用两次时,它会给出异常。但是我的代码与那些代码没什么相似之处。我在ViewPager中使用AndroidSaxParser。每个片段执行一个AsyncTask,它解析rss并将数据加载到ListView中。
问题在随机时间发生,这使得难以追踪问题导致的问题。我也注意到在api 14+设备上问题根本没有发生。它只发生在我的api 8设备上,可能发生在其他设备上。 api 14.
我得到的确切Expat错误是:
ExpatParser$ParseException at line 1 column 0 no element found
LogCat指向的代码只是启动解析器的代码,但是没有任何内容为null或与正确执行的时间不同。
try
{
Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
}
catch (Exception e)
{
Log.e("parser", "PARSER CRASHED");
Log.e("expat", "inputStream " + this.getInputStream() + " xml " + Xml.Encoding.UTF_8 + " contentHandler " + root.getContentHandler());
Log.w("the feed", "" + rssFeed);
throw new RuntimeException(e);
}
追踪: errors
答案 0 :(得分:5)
解析时,您使用的inputStream为空。首先读取整个inputStream,然后解析内容。