pull解析xml

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;
    }
}
 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值