android下载解析xml

android下载解析xml

public class MainActivity extends Activity {
        protected static final String PATH = "http://192.168.37.2:8081/news/news.xml";
        protected static final int TIME_OUT = 3000;
        private ListView lv_news;
        private Handler handler = new Handler(){
            @Override
            public void handleMessage(Message msg){
                switch (msg.what) {
                case RESULT_OK:
                    List<Item> list = (List<Item>) msg.obj;
                    lv_news.setAdapter(new MyAdapter(list,MainActivity.this));
                    break;
                case RESULT_CANCELED:
                    Log.d("tag", "RESULT_CANCELED");
                    break;
                default:
                    break;
                }
            }
        };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            lv_news = (ListView) findViewById(R.id.lv_news);
        }
        public void readNews(View view){
            new Thread(new Runnable() {
                @Override
                public void run() {

                    try {

                        URL url = new URL(PATH);
                        HttpURLConnection conn  = (HttpURLConnection) url.openConnection();
                        conn.setRequestMethod("GET");
                        conn.setReadTimeout(TIME_OUT);
                        conn.connect();
                        int responseCode = conn.getResponseCode();
                        if (responseCode==200) {
                            InputStream is = conn.getInputStream();
                            List<Item> items = parserXML(is);

                            handler.obtainMessage(RESULT_OK, items).sendToTarget();
                        }else{
                            handler.obtainMessage(RESULT_CANCELED, "发送失败").sendToTarget();
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();
        }
        protected List<Item> parserXML(InputStream is) throws Exception {

            XmlPullParser parser = Xml.newPullParser();
            parser.setInput(is, "utf-8");
            List<Item> list = null ;
            Item item = null ;
            int event =-1;
            while((event=parser.next())!=XmlPullParser.END_DOCUMENT){
                String tagName = parser.getName();
                if(event == XmlPullParser.START_TAG){
                    if("channel".equals(tagName)){
                        list = new ArrayList<Item>();
                    }
                    else if ("item".equals(tagName)) {
                        item = new Item();
                    }else if ("title".equals(tagName)) {
                        item.tile = parser.nextText();
                    }else if ("description".equals(tagName)) {
                        item.desc = parser.nextText();
                    }else if ("image".equals(tagName)) {
                        item.image = parser.nextText();
                    }else if ("type".equals(tagName)) {
                        item.type= parser.nextText();
                    }else if ("comment".equals(tagName)) {
                        item.comment= parser.nextText();
                    }
                }else if (event==XmlPullParser.END_TAG) {
                    if("item".equals(tagName)){
                        list.add(item);
                    }
                }
            }
            return list;
        }
    }

猜你喜欢

转载自blog.csdn.net/AliEnCheng/article/details/78446666