Xml之pull解析

本文介绍了一种使用Java从远程服务器获取XML文件并解析其内容的方法。通过使用HttpURLConnection和XmlPullParser,代码能够读取特定路径下的XML文件,并将其转换为Bean对象列表。最后,这些数据被设置为ListView的适配器,实现学生信息的有效展示。
摘要由CSDN通过智能技术生成

具体代码如下

public class MainActivity extends AppCompatActivity {

    private String path="http://172.17.29.120/localuser/loupengfei/kaoshi/student.xml";
    private ListView lv;
    Handler handler=new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            List<Bean> list= (List<Bean>) msg.obj;
            lv.setAdapter(new MylistviewAdapter(MainActivity.this,list));

        }
    };
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件id
        lv= (ListView) findViewById(R.id.lv);
        //得到数据
        getdata();
    }

    public void getdata() {
        new Thread(){
            @Override
            public void run() {
                try {
                    URL url=new URL(path);
                    HttpURLConnection conn= (HttpURLConnection) url.openConnection();
                    InputStream inputStream = conn.getInputStream();
                    //解析
                    XmlPullParser parser= Xml.newPullParser();
                    parser.setInput(new InputStreamReader(inputStream));

                    List<Bean> list=new ArrayList<Bean>();

                    int evenType=parser.getEventType();
                    Bean bean=null;
                    while(evenType!=XmlPullParser.END_DOCUMENT) {
                        switch (evenType) {
                            case XmlPullParser.START_TAG:
                                String name = parser.getName();

                                if ("student".equals(name)) {
                                    //文档开始的时候创建
                                    bean = new Bean();
                                    //学号
                                    bean.setXuehao(parser.getAttributeValue(0));
                                } else if ("name".equals(name)) {
                                    bean.setName(parser.nextText());
                                } else if ("address".equals(name)) {
                                    bean.setAddress(parser.nextText());
                                } else if ("phone".equals(name)) {
                                    bean.setPhone(parser.nextText());
                                } else if ("tel".equals(name)) {
                                    bean.setTel(parser.nextText());
                                } else if ("school".equals(name)) {
                                    bean.setSchool(parser.nextText());
                                }

                                break;
                            case XmlPullParser.END_TAG:
                                //标签结束时添加到集合
                                list.add(bean);
                                break;
                        }
                        //步幅
                        evenType=parser.next();
                    }
                    //发送
                    Message msg=Message.obtain();
                    msg.obj=list;
                    handler.sendMessage(msg);

                } catch (MalformedURLException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (XmlPullParserException e) {
                    e.printStackTrace();
                }
            }
        }.start();

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值