Android rss(rss 2.0和atom)解析错误:行xxx列xxx:格式不正确(无效令牌)

时间:2013-05-28 13:19:46

标签: android xml xml-parsing

我正在尝试创建我的第一个Rss阅读器,但我有一个问题。 我有一个类,其方法返回一个提要列表。

public ArrayList<FeedsItem> getFeedList()
        {
            final FeedsItem fi = new FeedsItem(Const.appDebugMode);
            final ArrayList<FeedsItem> fl = new ArrayList<FeedsItem>();
            /**
             * xml parse elements
             */
            RootElement root = new RootElement("rss");
            Element channel = root.getChild("channel");
            Element item = channel.getChild("item");


            item.setEndElementListener(new EndElementListener()
                {                       
                    @Override
                    public void end()
                        {
                            fl.add(fi.getCopy());                               
                        }
                });

            item.getChild("title").setEndTextElementListener(new EndTextElementListener()
                {                       
                    @Override
                    public void end(String body)
                        {
                       fi.setTitle(body);                               
                        }
                });     

            item.getChild("link").setEndTextElementListener(new EndTextElementListener()
                {                       
                    @Override
                    public void end(String body)
                        {
                            fi.setLink(body);                           
                        }
                });

            item.getChild("description").setEndTextElementListener(new EndTextElementListener()
                {                       
                    @Override
                    public void end(String body)
                        {
                            fi.setDescr(body);                              
                        }
                });

            item.getChild("pubDate").setEndTextElementListener(new EndTextElementListener()
                {

                    @Override
                    public void end(String body)
                        {
                            fi.setPubDate(body);                                
                        }
                });

            item.getChild("guid").setEndTextElementListener(new EndTextElementListener()
                {                       
                    @Override
                    public void end(String body)
                        {
                         fi.setGuid(body);                          
                        }
                });             
            /**             
             * парсим feed               
             */
            try
                {
                    Xml.parse(this.getInputStream(), Xml.Encoding.UTF_8, root.getContentHandler());
                } catch (Exception e)
                {
                    new FeedsParserWriteLog(Const.appDebugMode)
                     .WriteLog("FeedsParcer getFeed (parse xml) err= \n"+e.getLocalizedMessage());
                    throw new RuntimeException(e);
                }

            return fl;
        }

当我处理文件格式rss 2.0时 - 一切正常(如此链接http://news.yandex.ru/software.rss) 当我处理文件格式atom时(像这个链接http://ithappens.ru/rss/)-我有一个问题错误:行xxx列xxx:格式不正确(无效令牌)

我如何处理这两种格式?如何重写方法来处理2种格式?

THX

1 个答案:

答案 0 :(得分:0)

我遇到了和你一样的问题,我的问题是我使用HttpURLConnection并且响应是 GZipped ..似乎 urlConnection < / strong>不会为你解压缩,所以你必须自己动手。

Here您可以了解如何使用。

我希望它有所帮助!