pull解析一些特殊类型的XML文件

来源:互联网 发布:excel软件百度云 编辑:程序博客网 时间:2024/06/15 21:31

先来看看要解析的XML

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="beijing_array">        <item>北京</item>    </string-array>    <string-array name="tianjin_array">        <item>天津</item>    </string-array>    <string-array name="shanghai_array">        <item>上海</item>    </string-array>    <string-array name="chongqing_array">        <item>重庆</item>    </string-array>    <string-array name="xianggang_array">        <item>香港</item>    </string-array>    <string-array name="aomen_array">        <item>澳门</item>    </string-array>    <string-array name="liaoning_array">        <item>沈阳</item>        <item>大连</item>        <item>鞍山</item>        <item>抚顺</item>        <item>本溪</item>        <item>丹东</item>        <item>锦州</item>        <item>营口</item>        <item>阜新</item>        <item>辽阳</item>        <item>铁岭</item>        <item>朝阳</item>        <item>盘锦</item>        <item>葫芦岛</item>    </string-array>    <string-array name="heilongjiang_array">        <item>哈尔滨</item>        <item>齐齐哈尔</item>        <item>鸡西</item>        <item>鹤岗</item>        <item>双鸭山</item>        <item>大庆</item>        <item>伊春</item>        <item>佳木斯</item>        <item>牡丹江</item>        <item>七台河</item>        <item>黑河</item>    </string-array>    <string-array name="jilin_array">        <item>长春</item>        <item>吉林</item>        <item>四平</item>        <item>辽源</item>        <item>通化</item>        <item>白山</item>        <item>松原</item>        <item>白城</item>        <item>延吉</item>    </string-array>    <string-array name="neimenggu_array">        <item>呼和浩特</item>        <item>包头</item>        <item>乌海</item>        <item>赤峰</item>        <item>通辽</item>        <item>鄂尔多斯</item>        <item>呼伦贝尔</item>        <item>巴彦淖尔</item>        <item>乌兰察布</item>        <item>乌兰浩特</item>        <item>二连浩特</item>    </string-array>    <string-array name="xinjiang_array">        <item>乌鲁木齐</item>        <item>克拉玛依</item>        <item>吐鲁番</item>        <item>昌吉</item>        <item>博乐</item>        <item>库尔勒</item>        <item>阿克苏</item>        <item>阿图什</item>        <item>喀什</item>        <item>和田</item>        <item>伊宁</item>        <item>塔城</item>        <item>阿勒泰</item>    </string-array>    <string-array name="qinghai_array">        <item>西宁</item>    </string-array>    <string-array name="xizang_array">        <item>拉萨</item>    </string-array>    <string-array name="gansu_array">        <item>兰州</item>        <item>嘉峪关</item>        <item>金昌</item>        <item>白银</item>        <item>天水</item>        <item>武威</item>        <item>张掖</item>        <item>平凉</item>        <item>酒泉</item>        <item>庆阳</item>        <item>定西</item>        <item>陇南</item>        <item>临夏</item>        <item>合作</item>    </string-array>    <string-array name="ningxia_array">        <item>银川</item>        <item>石嘴山</item>        <item>吴忠</item>        <item>固原</item>        <item>中卫</item>    </string-array>    <string-array name="shan3xi_array">        <item>西安</item>        <item>铜川</item>        <item>宝鸡</item>        <item>咸阳</item>        <item>渭南</item>        <item>延安</item>        <item>汉中</item>        <item>榆林</item>        <item>安康</item>        <item>商洛</item>    </string-array>    <string-array name="shan1xi_array">        <item>太原</item>        <item>大同</item>        <item>阳泉</item>        <item>长治</item>        <item>晋城</item>        <item>朔州</item>        <item>晋中</item>        <item>运城</item>        <item>忻州</item>        <item>临汾</item>        <item>吕梁</item>    </string-array>    <string-array name="hebei_array">        <item>石家庄</item>        <item>唐山</item>        <item>秦皇岛</item>        <item>邯郸</item>        <item>邢台</item>        <item>保定</item>        <item>承德</item>        <item>沧州</item>        <item>廊坊</item>        <item>衡水</item>    </string-array>    <string-array name="shandong_array">        <item>济南</item>        <item>青岛</item>        <item>淄博</item>        <item>枣庄</item>        <item>东营</item>        <item>烟台</item>        <item>潍坊</item>        <item>济宁</item>        <item>泰安</item>        <item>威海</item>        <item>日照</item>        <item>莱芜</item>        <item>临沂</item>        <item>德州</item>        <item>聊城</item>        <item>滨州</item>        <item>菏泽</item>    </string-array>    <string-array name="jiangsu_array">        <item>南京</item>        <item>无锡</item>        <item>徐州</item>        <item>常州</item>        <item>苏州</item>        <item>南通</item>        <item>连云港</item>        <item>淮安</item>        <item>盐城</item>        <item>扬州</item>        <item>镇江</item>        <item>泰州</item>        <item>宿迁</item>    </string-array>    <string-array name="anhui_array">        <item>合肥</item>        <item>芜湖</item>        <item>蚌埠</item>        <item>淮南</item>        <item>马鞍山</item>        <item>淮北</item>        <item>铜陵</item>        <item>安庆</item>        <item>黄山</item>        <item>滁州</item>        <item>阜阳</item>        <item>宿州</item>        <item>巢湖</item>        <item>六安</item>        <item>毫州</item>        <item>池州</item>        <item>宣城</item>    </string-array>    <string-array name="henan_array">        <item>郑州</item>        <item>开封</item>        <item>洛阳</item>        <item>平顶山</item>        <item>安阳</item>        <item>鹤壁</item>        <item>新乡</item>        <item>焦作</item>        <item>濮阳</item>        <item>许昌</item>        <item>漯河</item>        <item>三门峡</item>        <item>南阳</item>        <item>商丘</item>        <item>信阳</item>        <item>周口</item>        <item>驻马店</item>    </string-array>    <string-array name="hubei_array">        <item>武汉</item>        <item>黄石</item>        <item>十堰</item>        <item>宜昌</item>        <item>襄樊</item>        <item>鄂州</item>        <item>荆门</item>        <item>孝感</item>        <item>荆州</item>        <item>黄冈</item>        <item>咸宁</item>        <item>随州</item>        <item>恩施</item>    </string-array>    <string-array name="sichuan_array">        <item>成都</item>        <item>自贡</item>        <item>攀枝花</item>        <item>泸州</item>        <item>德阳</item>        <item>绵阳</item>        <item>广元</item>        <item>遂宁</item>        <item>内江</item>        <item>乐山</item>        <item>南充</item>        <item>眉山</item>        <item>宜宾</item>        <item>内广安</item>        <item>达州</item>        <item>雅安</item>        <item>巴中</item>        <item>资阳</item>    </string-array>    <string-array name="yunnan_array">        <item>昆明</item>        <item>曲靖</item>        <item>玉溪</item>        <item>保山</item>        <item>昭通</item>        <item>丽江</item>        <item>思茅</item>        <item>临沧-lincang</item>    </string-array>    <string-array name="guizhou_array">        <item>贵阳</item>        <item>六盘水</item>        <item>遵义</item>        <item>安顺</item>        <item>铜仁</item>        <item>兴义</item>        <item>毕节</item>        <item>凯里</item>        <item>都匀</item>    </string-array>    <string-array name="hunan_array">        <item>长沙</item>        <item>株洲</item>        <item>湘潭</item>        <item>衡阳</item>        <item>邵阳</item>        <item>岳阳</item>        <item>常德</item>        <item>张家界</item>        <item>益阳</item>        <item>郴州</item>        <item>永州</item>        <item>怀化</item>        <item>娄底</item>        <item>吉首</item>    </string-array>    <string-array name="jiangxi_array">        <item>南昌</item>        <item>萍乡</item>        <item>九江</item>        <item>新余</item>        <item>鹰潭</item>        <item>赣州</item>        <item>吉安</item>        <item>宜春</item>        <item>抚州</item>        <item>上饶</item>    </string-array>    <string-array name="zhejiang_array">        <item>杭州</item>        <item>宁波</item>        <item>温州</item>        <item>嘉兴</item>        <item>湖州</item>        <item>绍兴</item>        <item>金华</item>        <item>衢州</item>        <item>舟山</item>        <item>台州</item>        <item>丽水</item>    </string-array>    <string-array name="fujian_array">        <item>福州</item>        <item>厦门</item>        <item>莆田</item>        <item>三明</item>        <item>泉州</item>        <item>漳州</item>        <item>南平</item>        <item>龙岩</item>        <item>宁德</item>    </string-array>    <string-array name="guangdong_array">        <item>广州</item>        <item>韶关</item>        <item>深圳</item>        <item>珠海</item>        <item>汕头</item>        <item>佛山</item>        <item>江门</item>        <item>湛江</item>        <item>茂名</item>        <item>肇庆</item>        <item>惠州</item>        <item>梅州</item>        <item>汕尾</item>        <item>河源</item>        <item>阳江</item>        <item>清远</item>        <item>东莞</item>        <item>中山</item>        <item>潮州</item>        <item>揭阳</item>        <item>云浮</item>    </string-array>    <string-array name="guangxi_array">        <item>南宁</item>        <item>柳州</item>        <item>桂林</item>        <item>梧州</item>        <item>北海</item>        <item>防城港</item>        <item>钦州</item>        <item>贵港</item>        <item>玉林</item>        <item>百色</item>        <item>贺州</item>        <item>河池</item>        <item>来宾</item>        <item>崇左</item>    </string-array>    <string-array name="hainan_array">        <item>海口</item>        <item>三亚</item>    </string-array>    <string-array name="taiwan_array">        <item>台北</item>        <item>高雄</item>        <item>台中</item>    </string-array></resources>
再看看解析方法

   public InputStream getInputStreamFromAssets(String fileName) {try {    InputStream inputStream = getResources().getAssets().open(fileName);    return inputStream;} catch (IOException e) {    e.printStackTrace();}return null;    }    public static ArrayList<CityBean> Parse(InputStream provinceIS) {ArrayList<CityBean> provinceArray = new ArrayList<CityBean>();try {    // 定义工厂 XmlPullParserFactory    XmlPullParserFactory factory = XmlPullParserFactory.newInstance();    // 定义解析器 XmlPullParser    XmlPullParser parser = factory.newPullParser();    // 获取xml输入数据    parser.setInput(provinceIS, "utf-8");    provinceArray = ParseXml(parser);} catch (XmlPullParserException e) {    e.printStackTrace();}return provinceArray;    }    public  ArrayList<CityBean> ParseXml(XmlPullParser parser) {ArrayList<CityBean> provinceArray = new ArrayList<CityBean>();CityBean provinceTemp = null;List<String> cityName = null;try {    // 开始解析事件    int eventType = parser.getEventType();    // 处理事件,不碰到文档结束就一直处理    while (eventType != XmlPullParser.END_DOCUMENT) {// 因为定义了一堆静态常量,所以这里可以用switchString tagName = parser.getName();switch (eventType) {case XmlPullParser.START_DOCUMENT:    // 不做任何操作或初开始化数据    break;case XmlPullParser.START_TAG:    // 解析XML节点数据    // 获取当前标签名字    if (tagName.equals("string-array")) {provinceTemp = new CityBean();cityName = new ArrayList<String>();provinceTemp.setProvinceName(parser.getAttributeValue(0));    } else if (tagName.equals("item")) {cityName.add(parser.nextText());provinceTemp.setCityName(cityName);    }    break;case XmlPullParser.END_TAG:    // 单节点完成,可往集合里边添加新的数据    if (tagName.equals("string-array"))provinceArray.add(provinceTemp);    break;case XmlPullParser.END_DOCUMENT:    break;}// 别忘了用next方法处理下一个事件,忘了的结果就成死循环#_#eventType = parser.next();    }} catch (XmlPullParserException e) {    e.printStackTrace();} catch (IOException e) {    e.printStackTrace();}return provinceArray;    }
解析的原理很简单,就是用string-array item 等Tag来检索里面的文本 

源码下载点击打开链接


1 0
原创粉丝点击