0

初めての 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のように)ファイル形式アトムを処理すると(このリンクhttp://ithappens.ru/rss/のように) )-問題の エラーがあります: 行 xxx 列 xxx: 整形式ではありません (無効なトークン)

どうすれば両方のフォーマットを処理できますか? 2 つの形式を処理するようにメソッドを書き直すにはどうすればよいですか?

どうも

4

1 に答える 1

0

私はあなたと同じ問題に遭遇しました。私の場合の問題は、私が使用していHttpURLConnectionて、応答がGZippedだったということでした..

必要な場合は、ここでその方法を確認できます。

それが役立つことを願っています!

于 2015-01-11T09:29:42.757 に答える