Xml使用pull解析

来源:互联网 发布:backtrack4 linux iso 编辑:程序博客网 时间:2024/05/16 07:15
该 XML 文件并未包含任何关联的样式信息。文档树显示如下。
<DATA>
<item>
<title>复旦大学教授、著名翻译家陆谷孙逝世</title>
<link>http://news.sciencenet.cn/htmlnews/2016/7/352456.shtm?id=352456</link>
<imgs>http://news.sciencenet.cn</imgs>
<description>中青在线上海7月28日电(中国青年报•中青在线记者 周凯 张茜)今天下午1时39分,英汉大词典主编、著名翻译家、复旦大学外语学院教授陆谷孙先生在上海新华医院去世,享年76岁。陆谷孙,194...</description>
<copyright>周凯 张茜</copyright>
<pubDate>2016-07-28 14:53</pubDate>
<comments>http://news.sciencenet.cn/html/comment.aspx?id=352456</comments>
</item>

public class MainActivity extends AppCompatActivity {
    private ListView lv;
    private TextView tv;
    private res re=null;
    private List<res> reslist;
    private String urll="http://www.sciencenet.cn/xml/iphoneInterface.aspx?type=news&nums=20&pass=";
    private Myadapter myadapter;

    Handler handler=new Handler(){

        @Override
        public void handleMessage(Message msg) {
            myadapter=new Myadapter(reslist,MainActivity.this);
            lv.setAdapter(myadapter);
            myadapter.notifyDataSetChanged();
        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=(ListView) findViewById(R.id.lv);
        tv=(TextView) findViewById(R.id.tv);
        getid(urll);
    }

    private void getid(final String urll) {
        new Thread(){
            @Override
            public void run() {
                try {
                    URL url=new URL(urll);
                    HttpURLConnection connection= (HttpURLConnection) url.openConnection();
                    connection.setReadTimeout(5000);
                    connection.setConnectTimeout(5000);
                    connection.setRequestMethod("GET");
                    int code=connection.getResponseCode();
                    if(code==200){
                        InputStream is=connection.getInputStream();
                       //得到数据开始解析
                        tojson(is);
                        handler.sendEmptyMessage(0);
                    }
                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }.start();
    }

    private void tojson(InputStream str){

        try {
            XmlPullParserFactory factory =XmlPullParserFactory.newInstance();
            XmlPullParser parser = factory.newPullParser();
            parser.setInput(str,"utf-8");
            //类型判断
            int eventType = parser.getEventType();
            while(eventType!=XmlPullParser.END_DOCUMENT){
                String name = parser.getName();
                switch (eventType){
                    case XmlPullParser.START_DOCUMENT:
                        reslist=new ArrayList<res>();
                        break;
                    case XmlPullParser.START_TAG:
                        //re.setCDATA(Integer.parseInt(parser.getAttributeValue(0)));
                        if("title".equals(name)){
                            re=new res();
                            re.setCDATA(parser.nextText());
                        }else if("link".equals(name)){
                            re.setLink(parser.nextText());
                        }else if("copyright".equals(name)){
                            re.setCopyright(parser.nextText());
                        }else if("pubDate".equals(name)){
                            re.setPubDate(parser.nextText());
                        }
                        break;
                    case XmlPullParser.END_TAG:
                        if(name.equals("item")) {
                            reslist.add(re);
                        }
                        break;
                }
                eventType=parser.next();
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
0 1