pull解析xml

来源:互联网 发布:如何把淘宝微信群做大 编辑:程序博客网 时间:2024/05/01 21:47
package com.example.pulls.uri;/** * Created by TYF on 2016/7/6. */public class Person {    public int _id;    public String username;    public String password;    public String pic;    public Person(int _id, String password, String pic, String username) {        this._id = _id;        this.password = password;        this.pic = pic;        this.username = username;    }    public Person() {    }    @Override    public String toString() {        return "Person{" +                "_id=" + _id +                ", username='" + username + '\'' +                ", password='" + password + '\'' +                ", pic='" + pic + '\'' +                '}';    }}
package com.example.pulls;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.util.Xml;import android.view.View;import android.widget.Button;import android.widget.ListView;import com.example.pulls.uri.Cantant;import com.example.pulls.uri.Person;import org.xmlpull.v1.XmlPullParser;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;public class XmlActivity extends AppCompatActivity {    public static final String pathxml = Cantant.ipConfig + "/persons.xml";    public static final String TAG = "XmlActivity";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_xml);    }    public void btGetxml(View view) {        new Thread() {            @Override            public void run() {                try {                    List<Person> list = parseIs(getXml(pathxml));                    for (Person p : list) {                        Log.i(TAG, p + "--");                    }                } catch (Exception e) {                    e.printStackTrace();                }            }        }.start();    }    //得到数据流    public InputStream getXml(String path) throws Exception {        URL url = new URL(path);        HttpURLConnection conn = (HttpURLConnection) url.openConnection();        conn.setRequestMethod("GET");        conn.setConnectTimeout(3000);        int code = conn.getResponseCode();        if (code == HttpURLConnection.HTTP_OK) {            return conn.getInputStream();        }        return null;    }    //pull解析数据流    public List<Person> parseIs(InputStream is) throws Exception {        //1.得到解析器        XmlPullParser parser = Xml.newPullParser();        //2.用什么编程解析什么流        parser.setInput(is, "utf-8");        //3.得到类型        int eventType = parser.getEventType();        //4.循环        List<Person> lists = null;        Person person = null;        while (XmlPullParser.END_DOCUMENT != eventType) {            switch (eventType) {                //如果是开始标签                case XmlPullParser.START_TAG:                    //如果遇到Persons.就创集合                    if ("persons".equals(parser.getName())) {                        lists = new ArrayList<>();                    } else if ("person".equals(parser.getName())) {                        //如果遇到person,创实体                        person = new Person();                    } else if ("_id".equals(parser.getName())) {                        //如果遇到_id,为实体_id赋值                        int _id = Integer.parseInt(parser.nextText());                        person._id = _id;                    } else if ("username".equals(parser.getName())) {                        String username = parser.nextText();                        person.username = username;                    } else if ("password".equals(parser.getName())) {                        String password = parser.nextText();                        person.password = password;                    } else if ("pic".equals(parser.getName())) {                        String pic = parser.nextText();                        person.pic = pic;                    }                    break;                //如果是结束标签                case XmlPullParser.END_TAG:                    if ("person".equals(parser.getName())) {                        //添加到集合                        lists.add(person);                        person = null;                    }                    break;            }            //往下走            eventType = parser.next();        }        return lists;    }}
                                             
0 0
原创粉丝点击