我的RSS阅读器有例外

时间:2017-07-18 11:48:22

标签: android rss rss-reader

我从一年前开始在我的应用程序中集成了RSS阅读器,但是当我继续使用时,我有一个空白页面?为什么?这是因为我的Android设备更新了吗?

所以我尝试调试,我的RSS Parser在这一行有一个例外:

parser.nextTag();

完整代码:

public class RssParser {
    private String readText(XmlPullParser parser) throws IOException, XmlPullParserException {
        String result = "";
        if (parser.next() == XmlPullParser.TEXT) {
            result = parser.getText();
            parser.nextTag();
        }
        return result;
    }
    private static final String ns = null;

    private void skip(XmlPullParser parser) throws XmlPullParserException, IOException {
        if (parser.getEventType() != XmlPullParser.START_TAG) {
            throw new IllegalStateException();
        }
        int depth = 1;
        while (depth != 0) {
            switch (parser.next()) {
                case XmlPullParser.END_TAG:
                    depth--;
                    break;
                case XmlPullParser.START_TAG:
                    depth++;
                    break;
            }
        }
    }

    public ArrayList<News> parse(InputStream in) throws XmlPullParserException, IOException {
        try {
            XmlPullParser parser = Xml.newPullParser();
            parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
            parser.setInput(in, null);
            parser.nextTag();
            ArrayList<News> entries = new ArrayList<News>();

            parser.require(XmlPullParser.START_TAG, ns, "rss");
            parser.nextTag();
            parser.require(XmlPullParser.START_TAG, ns, "channel");
            while (parser.next() != XmlPullParser.END_TAG) {
                if (parser.getEventType() != XmlPullParser.START_TAG) {
                    continue;
                }
                String name = parser.getName();
                if (name.equals("item")) {
                    String title = "";
                    String link = "";
                    String pubDate = "";
                    String content = "";
                    while (parser.next() != XmlPullParser.END_TAG) {
                        if (parser.getEventType() != XmlPullParser.START_TAG) {
                            continue;
                        }
                        name = parser.getName();
                        if (name.equals("title")) {
                            title = readText(parser);
                        } else if (name.equals("link")) {
                            link = readText(parser);
                        } else if (name.equals("pubDate")) {
                            pubDate = readText(parser);
                        } else if (name.equals("description")) {
                            content = readText(parser);
                        } else
                            skip(parser);
                    }
                    entries.add(new News(link, title, pubDate, content));
                }  else
                    skip(parser);
            }
            return entries;
        } finally {
            in.close();
        }
    }
}

这里是主要课程:

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            View view = inflater.inflate(R.layout.activity_actualites, container, false);
            ListView list = (ListView) view.findViewById(R.id.listView1);
            adapter = new NewsAdapterM(getActivity(), new ArrayList<News>());
            list.setAdapter(adapter);
            a = new AsyncTask<Void, Void, List>() {
                    @Override
                    protected List doInBackground(Void... params) {
                            ArrayList<News> res = new ArrayList<News>();
                            try {
                                    URL url = new URL("http://www.solutis.fr/mentions-legales,rss.html");
                                    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                                    RssParser parser = new RssParser();
                                    try {
                                            return parser.parse(urlConnection.getInputStream());
                                    } catch (XmlPullParserException e) {
                                            e.printStackTrace();
                                    }
                            } catch (IOException e) {
                                    e.printStackTrace();
                            }
                            return res;
                    }

                    @Override
                    protected void onPostExecute(List result) {
                            adapter.update(result);
                    }
            };
            a.execute();
            TextView textView =(TextView)getActivity().findViewById(R.id.main_toolbar_title);
            textView.setText(getString(R.string.title_mentions));
            textView.setTypeface(Typeface.createFromAsset(getActivity().getAssets(), "fonts/GothamBook.ttf"));
            return view;
    }

0 个答案:

没有答案