【问题标题】:Parser is returning null解析器返回 null
【发布时间】:2014-07-24 15:00:06
【问题描述】:

我正在解析一个 RSS 提要。下载流,甚至设置解析器。但是当我将事件设为空时。此语句“int eventType = parser.getEventType();”始终为空。 我没有任何例外。它不阅读标签。 这是我的解析器:

    public class RssParser {
        public ArrayList<Item> parseXml(XmlPullParser parser) throws XmlPullParserException,IOException{
            ArrayList<Item> feed=null;
            Item currentFeed=null;
            int eventType=parser.getEventType();
            while(eventType != XmlPullParser.END_DOCUMENT){
                String currentTag = null;
                switch(eventType){
                case XmlPullParser.START_DOCUMENT:
                    feed = new ArrayList<Item>();

                    break;

                case XmlPullParser.START_TAG:
                    currentTag = parser.getName();
                    if(currentTag.equalsIgnoreCase("item")){
                        currentFeed = new Item();


                    }
                    else if(currentFeed != null){
                        if(currentTag.equalsIgnoreCase("title")){
                            currentFeed.title=parser.nextText();
                        }

                        else if(currentTag.equalsIgnoreCase("description")){
                            currentFeed.description=parser.nextText();

                        }

                    }
                    break;
                case XmlPullParser.END_TAG:
                    currentTag = parser.getName();
                    if(currentTag.equalsIgnoreCase("item") && (currentFeed != null)){
                        feed.add(currentFeed);
                    }
                }
                eventType = parser.next();



            }
            return feed;

        }

    }

In this class i downloaded the parser & instantiating it.

private List<Item> downloadUrl(String urlString) throws IOException{
        InputStream stream;
        List<Item> items=null;

        try {
            URL url = new URL(urlString);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(10000 );
            conn.setConnectTimeout(15000 );
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            conn.connect();
            int response = conn.getResponseCode();  
            Log.d("response","" +response);
            stream = conn.getInputStream();
            XmlPullParserFactory pullParser;
            try{
                pullParser=XmlPullParserFactory.newInstance();
                XmlPullParser parser=pullParser.newPullParser();
                parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
                parser.setInput(stream, null);
                RssParser rssObj=new RssParser();
                rssObj.parseXml(parser);
                Log.d("parser", ""+parser);
            }catch(XmlPullParserException e1){
                e1.printStackTrace();
            }
            catch (IOException e2) {
            e2.printStackTrace();   
            }
        } finally{

        }

     return items;


        }

解析器出了什么问题。我会很感激你,请帮助我摆脱这个问题

【问题讨论】:

    标签: android parsing rss


    【解决方案1】:

    我认为您正在寻找 inputstream.available() 然后解析它。

    谢谢

    【讨论】:

    • 对不起。但我没有得到你。我应该把这个声明放在哪里?
    猜你喜欢
    • 2021-09-09
    • 2021-10-17
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-01-02
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多