采用PULL解析XML文件&&断点调试



XML解析方式



安卓下使用pull解析方式

文件结构



<?xml version="1.0" encoding="gb2312"?>
<addr>
    <person id="001">
        <name>Tom</name>
        <address>广州市天河区</address>
        <tel>020-85210001</tel>
        <Company>华南师范大学</Company>
    </person>
    <person id="002">
        <name>Bob</name>
        <address>广州市天河区</address>
        <tel>020-85210002</tel>
        <Company>华南师范大学</Company>
    </person>
    <person id="003">
        <name>Alice</name>
        <address>广州市天河区</address>
        <tel>020-85210003</tel>
        <Company>华南师范大学</Company>
    </person>
</addr>


package com.example.domain;
public class AddrInfos {
    private int id;
    private String name;
    private String Address;
    private String tel;
    private String Company;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAddress() {
        return Address;
    }
    public void setAddress(String address) {
        Address = address;
    }
    
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getCompany() {
        return Company;
    }
    public void setCompany(String company) {
        Company = company;
    }
    @Override
    public String toString() {
        return "AddrInfos [人物id=" + id + ", 姓名=" + name + ", 住址="
                + Address + ", 电话=" + tel + ", 组织=" + Company + "]";
    }
}

package com.example.InformationServices;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import com.example.domain.AddrInfos;
public class InformationServices {
    public static List<AddrInfos> getAddrInfos(InputStream is) throws Exception {
        XmlPullParser parser = Xml.newPullParser();
        // 初始化解析器
        parser.setInput(is, "UTF-8");
        // 获取事件的类型
        int type = parser.getEventType();
        List<AddrInfos> list = null;
        AddrInfos addr = null;
        while (type != XmlPullParser.END_DOCUMENT) {
            switch (type) {
            case XmlPullParser.START_TAG:
                if ("addr".equals(parser.getName())) {
                    // 解析到全局开始标签
                    list = new ArrayList<AddrInfos>();
                }
                // 解析到“person”标签
                else if ("person".equals(parser.getName())) {
                    addr = new AddrInfos();
                    String id = parser.getAttributeValue(0);
                    addr.setId(Integer.parseInt(id));
                }
                // 解析到“name”标签
                else if ("name".equals(parser.getName())) {
                    String name = parser.nextText();
                    addr.setName(name);
                }
                // 解析到“address”标签
                else if ("address".equals(parser.getName())) {
                    String address = parser.nextText();
                    addr.setAddress(address);
                }
                // 解析到“tel”标签
                else if ("tel".equals(parser.getName())) {
                    String tel = parser.nextText();
                    addr.setTel(tel);
                }
                // 解析到“Company”标签
                else if ("Company".equals(parser.getName())) {
                    String Company = parser.nextText();
                    addr.setCompany(Company);
                }
                break;
            case XmlPullParser.END_TAG:
                if ("person".equals(parser.getName())) {
                    // 一个人的信息处理完毕
                    list.add(addr);
                    addr = null;
                }
                break;
            }
            // 可以循环终止条件
            type = parser.next();
        }
        return list;
    }
}

package com.example.xmlresolve;
import java.util.List;
import com.example.InformationServices.InformationServices;
import com.example.domain.AddrInfos;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv = (TextView) findViewById(R.id.tv);
        StringBuilder sb=new StringBuilder();
        try {
            List<AddrInfos> infos= InformationServices.getAddrInfos(MainActivity.class.getClassLoader()
                    .getResourceAsStream("Address_Book.xml"));
            for(AddrInfos info:infos){
                String str=info.toString();
                sb.append(str);
                sb.append("\n");
            }
            Log.i("addr""輸出");
            tv.setText(sb.toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            Toast.makeText(this"解析失败", 0).show();
        }
    }












posted @ 2014-07-28 17:14  little-byte  阅读(489)  评论(0)    收藏  举报