Xml利用Pull解析

来源:互联网 发布:mmd工口动作数据 编辑:程序博客网 时间:2024/05/21 15:44
<?xml version="1.0" encoding="UTF-8"?>
<root name="中国">

  <province name="北京市" postcode="110000" >
    <city name="北京市" postcode="110100" >
        <area name="东城区" postcode="110101" />
        <area name="西城区" postcode="110102" />
        <area name="崇文区" postcode="110103" />
    </city>

  </province>



public class MainActivity extends Activity {

    private TextView tv;
    private City citys;
    private List<String> string = new ArrayList<String>();;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv_show);
        PullParser();
    }
    //Pull解析
    private void PullParser() {
        try {
            // 创建一个Pull的工厂
            XmlPullParserFactory factory=XmlPullParserFactory.newInstance();
            // 创建一个XmlPullParser
            XmlPullParser parser=factory.newPullParser();
            parser.setInput(getAssets().open("city.xml"),"utf-8");
            //触发第一次解析,并获得类型
            int type=parser.getEventType();
            //遍历循环
            while(type!=XmlPullParser.END_DOCUMENT){
                String tagName=parser.getName();
                switch (type) {
                case XmlPullParser.START_DOCUMENT:
                    break;
                case XmlPullParser.START_TAG:
                    if(tagName.equals("root")){
                        citys = new City();
                        citys.setCountry(parser.getAttributeValue(0));
                    }
                    if(tagName.equals("province")){
                        citys.setProvince_name(parser.getAttributeValue(0));
                        citys.setProvince_postcode(parser.getAttributeValue(1));
                    }else if(tagName.equals("city")){
                        citys.setCity_name(parser.getAttributeValue(0));
                        citys.setCity_postcode(parser.getAttributeValue(1));
                    }else if(tagName.equals("area")){
                        citys.setArea_name(parser.getAttributeValue(0));
                        citys.setArea_postcode(parser.getAttributeValue(1));
                    }
                    break;
                case XmlPullParser.END_TAG:
                    if(tagName.equals("area")){
                        string.add(citys.toString());
                    }
                    break;
                default:
                    break;
                }
                type=parser.next();
            }
            for(String ss:string){
                tv.append(ss.toString()+"\n\n");
            }
        } catch (XmlPullParserException e) {
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

0 0
原创粉丝点击