您的位置:首页 > 其它

解析Xml

2016-07-27 16:23 141 查看
private List<News> list;

    private ListView lv;

    // 使用handle更新UI

    Handler hand = new Handler() {

        public void handleMessage(android.os.Message msg) {

            hand.sendEmptyMessageDelayed(0, 2000);

            lv.setAdapter(new Myapdter(MainActivity.this, list));

        };

    };

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        lv = (ListView) findViewById(R.id.lv);

        // 使用线程

        new Thread() {

            public void run() {
                hand.sendEmptyMessageDelayed(0, 2000);

//地址

                show("http://www.sciencenet.cn/xml/iphoneinterface.aspx?type=news&nums=20&pass=2");

            };

        }.start();

        // 设置监听事件

        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override

            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {

                Intent intent = new Intent(MainActivity.this, SecondActivity.class);

                intent.putExtra("url", list.get(arg2).getLink());

                startActivity(intent);

            }

        });

    }

    // 解析数据

    public void show(String sturl) {

        URL url;

        try {

            url = new URL(sturl);

            HttpURLConnection con = (HttpURLConnection) url.openConnection();

            con.connect();

            int code = con.getResponseCode();

            if (code == 200) {

                InputStream is = con.getInputStream();

                // pull解析

                XmlPullParser parser = Xml.newPullParser();

                parser.setInput(is, "utf-8");

                News n = null;

                int eventype = parser.getEventType();

                while (eventype != XmlResourceParser.END_DOCUMENT) {

                    String tagName = parser.getName();

                    switch (eventype) {

                    case XmlPullParser.START_DOCUMENT:

                        list = new ArrayList<News>();

                        break;

                    case XmlPullParser.START_TAG:

                        if ("item".equalsIgnoreCase(tagName)) {

                            n = new News();

                        } else if ("title".equals(tagName)) {

                            n.setTitle(parser.nextText());

                        } else if ("link".equals(tagName)) {

                            n.setLink(parser.nextText());

                        } else if ("imgs".equals(tagName)) {

                            n.setImgs(parser.nextText());

                        } else if ("copyright".equals(tagName)) {

                            n.setCopyright(parser.nextText());

                        } else if ("pubDate".equals(tagName)) {

                            n.setPubDate(parser.nextText());

                        }

                        break;

                    case XmlPullParser.END_TAG:

                        if ("item".equals(tagName)) {

                            list.add(n);

                            // Log.e("info", "+++++" + n);

                        }

                        break;

                    case XmlPullParser.END_DOCUMENT:

                        break;

                    }

                    eventype = parser.next();

                }

            }

        } catch (Exception e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: