Android-pull解析xml

来源:互联网 发布:算法导论 原书第3版 编辑:程序博客网 时间:2024/05/20 07:32

效果图:
这里写图片描述

//XML pull提供了开始元素和结束元素。当某个元素开始时,可以调用parser.nextText从XML文档中提取所有字符数据package com.example.android29_sensor;import android.app.ProgressDialog;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.util.Xml;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.LinearLayout;import android.widget.ListView;import android.widget.TextView;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlPullParserException;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.ArrayList;import java.util.List;/** * XMLPullParser * 网络拿XML数据解析 * 使用HttpURLConnection获取连接对象 * 在清单文件添加网络权限 *  <uses-permission android:name="android.permission.INTERNET"></uses-permission> */public class MainActivity extends AppCompatActivity {    private ListView lv_main;    private List<Person> persons=new ArrayList<>();    private Person person;    private MyAdpter myAdpter;    private ProgressDialog progressDialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        lv_main = (ListView) findViewById(R.id.lv_main);        //实例化进度条        progressDialog = new ProgressDialog(this);        progressDialog.setMessage("正在加载中.....");        //实例化适配器        myAdpter = new MyAdpter();        lv_main.setAdapter(myAdpter);    }class MyAdpter extends  BaseAdapter{    @Override    public int getCount() {        return persons.size();    }    @Override    public Object getItem(int i) {        return persons.get(i);    }    @Override    public long getItemId(int i) {        return i;    }    @Override    public View getView(int i, View view, ViewGroup viewGroup) {        LinearLayout linearLayout=new LinearLayout(MainActivity.this);        linearLayout.setOrientation(LinearLayout.HORIZONTAL);        TextView textView=new TextView(MainActivity.this);        textView.setText(persons.get(i).getPage()+"");        linearLayout.addView(textView);        return linearLayout;    }}    public void parsexml(View view){        new MyTask().execute();    }    class MyTask extends AsyncTask{        @Override        protected void onPreExecute() {            super.onPreExecute();            progressDialog.show();        }        @Override        protected Object doInBackground(Object[] objects) {            //获取网络数据xml            //确定网络入径            String path="http://193.168.1.66:8080/Maven_SSM/getData.action";            try {            //实例化URL                URL url=new URL(path);                //获取连接对象               HttpURLConnection httpurlconnection= (HttpURLConnection) url.openConnection();                //设置请求方式                httpurlconnection.setRequestMethod("GET");                //设置请求连接超时的时间优化                httpurlconnection.setConnectTimeout(5000);                //获取结果码                int code=httpurlconnection.getResponseCode();                if(code==200){                    //获取服务器返回的数据                    InputStream inputStream=httpurlconnection.getInputStream();                    //解析pull                    XmlPullParser xmlPullParser= Xml.newPullParser();                    try {                        xmlPullParser.setInput(inputStream,"UTF-8");                        int type=xmlPullParser.getEventType();                        while(type!=XmlPullParser.END_DOCUMENT){                            switch(type){                                case XmlPullParser.START_TAG:                                    //获取开始标签的名字                                    String stagname=xmlPullParser.getName();                                    Log.i("test","数据1:"+stagname);                                    if("page".equals(stagname)){                                        String page=xmlPullParser.nextText();                                        Log.i("test","数据2:"+page);                                        person = new Person();                                        person.setPage(Integer.parseInt(page));                                    }                                    break;                                case XmlPullParser.END_TAG:                                    //获取结束标签的名字                                    String endname=xmlPullParser.getName();                                    Log.i("test","数据5:  "+endname);                                    if("persons".equals(endname)){                                        persons.add(person);                                        Log.i("test",""+person.getPage());                                    }                                    break;                            }                            type=xmlPullParser.next();                        }                    } catch (XmlPullParserException e) {                        e.printStackTrace();                    }                }            } catch (MalformedURLException e) {                e.printStackTrace();            } catch (IOException e) {                e.printStackTrace();            }            return null;        }        @Override        protected void onPostExecute(Object o) {            super.onPostExecute(o);            //通知适配器发生改变            myAdpter.notifyDataSetChanged();            progressDialog.cancel();        }    }}
0 0
原创粉丝点击