android使用XmlPullParser来解析XML文件

解析以下的一个XML:

[html]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. <?xml version="1.0" encoding="utf-8" ?>  
  2. <rss><sid>77f265bb46de068e78f35afbadec62af</sid><count>3</count><control>0</control>  
  3. <mblog><uid>1195224593</uid><favid>3436952795</favid><mblogid>5xtaJR</mblogid><mblogidnum>3436952795</mblogidnum><mblogtype>0</mblogtype><mlevel>0</mlevel><feedid>5xtaJR</feedid><nick>马艳丽</nick><portrait>http://tp2.sinaimg.cn/1195224593/50/5614100014/0</portrait><vip>1</vip><vipsubtype>0</vipsubtype><member_type>13</member_type><remark></remark><level>2</level><rtnum>11</rtnum><commentnum>25</commentnum><attitudenum>0</attitudenum><attitudeid>0</attitudeid><attitudes_status>0</attitudes_status><attitudes_count>0</attitudes_count><mblogtypename></mblogtypename><visible><type>0</type><list_id>0</list_id></visible><content>婚礼在北海美丽的北海公园举行…好美好浪漫的地方… </content><pic>http://ss12.sinaimg.cn/wap240/473dae11494344debfc5b</pic><time>1288852274</time><source>彩信</source></mblog></rss>  

这样来写解析:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public static Object[] getMBlogList(String content) throws HttpException {  
  2.     try {  
  3.         Object[] result = new Object[3];  
  4.         List<MBlog> lst = new ArrayList<MBlog>();  
  5.         result[1] = lst;  
  6.   
  7.         final XmlPullParser parser = Xml.newPullParser();  
  8.         parser.setInput(new StringReader(content));  
  9.         int type;  
  10.         while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {  
  11.             switch (type) {  
  12.                 <strong>case XmlPullParser.START_TAG:这里开始读取最外层的标签属性</strong>  
  13.                     if (parser.getName().equals("count")) {  
  14.                         try {  
  15.                             result[0] = new Integer(parseText(parser));  
  16.                         } catch (Exception e) {  
  17.                             result[0] = 0;  
  18.                         }  
  19.                     } else if (parser.getName().equals("mblog")) {  
  20.                         MBlog mb = parseMBlog(parser);  
  21.                         if (mb != null)  
  22.                             lst.add(mb);  
  23.                     } else if (parser.getName().equals("relation")) {  
  24.                         result[2] = new Integer(parseText(parser));  
  25.                     }  
  26.                     break;  
  27.                 default:  
  28.                     break;  
  29.             }  
  30.         }  
  31.         return result;  
  32.     } catch (NumberFormatException e) {  
  33.         throw new HttpException(e);  
  34.     } catch (XmlPullParserException e) {  
  35.         throw new HttpException(e);  
  36.     } catch (IOException e) {  
  37.         throw new HttpException(e);  
  38.     } catch (ParseException e) {  
  39.         throw new HttpException(e);  
  40.     }  
  41. }  
  42.   
  43. private static String parseText(XmlPullParser parser) throws ParseException {  
  44.     try {  
  45.         int type = parser.next();  
  46.         if (type == XmlPullParser.TEXT) {  
  47.             return replaceEntityRef(parser.getText().trim());  
  48.         } else {  
  49.             return "";  
  50.         }  
  51.     } catch (Exception e) {  
  52.         throw new ParseException(PARSE_ERROR, e);  
  53.     }  
  54. }  
  55.   
  56. public static MBlog parseMBlog(XmlPullParser parser) throws ParseException {  
  57.     <strong>MBlog b = new MBlog();//这里开始读取每个MBlog对象</strong>  
  58.     try {  
  59.         int type;  
  60.         LOOP: {  
  61.             while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {  
  62.                 switch (type) {  
  63.                     case XmlPullParser.START_TAG:  
  64.                         if (parser.getName().equals("uid")) {  
  65.                             b.uid = parseText(parser);  
  66.                             if (b.uid.equals(""))  
  67.                                 return null;  
  68.                         } else if (parser.getName().equals("favid")) {  
  69.                             b.favid = parseText(parser);  
  70.                         } else if (parser.getName().equals("mblogid")) {  
  71.                             b.mblogid = parseText(parser);  
  72.                         } else if (parser.getName().equals("nick")) {  
  73.                             String s = parseText(parser);  
  74.                             b.nick = s;  
  75.                         } else if (parser.getName().equals("portrait")) {  
  76.                             b.portrait = parseText(parser);  
  77.                         } else if (parser.getName().equals("vip")) {  
  78.                             b.vip = (parseText(parser).equals("1")) ? true : false;  
  79.                         } else if (parser.getName().equals("content")) {  
  80.                             b.content = parseText(parser);  
  81.                         } else if (parser.getName().equals("rtrootuid")) {  
  82.                             b.rtrootuid = parseText(parser);  
  83.                         } else if (parser.getName().equals("rtrootid")) {  
  84.                             b.rtrootid = parseText(parser);  
  85.                         } else if (parser.getName().equals("rtrootnick")) {  
  86.                             String s = parseText(parser);  
  87.                             b.rtrootnick = s;  
  88.                         } else if (parser.getName().equals("rtrootvip")) {  
  89.                             b.rtrootvip = (parseText(parser).equals("1")) ? true : false;  
  90.                         } else if (parser.getName().equals("rtreason")) {  
  91.                             b.rtreason = parseText(parser);  
  92.                         } else if (parser.getName().equals("rtnum")) {  
  93.                             b.rtnum = Integer.parseInt(parseText(parser));  
  94.                         } else if (parser.getName().equals("commentnum")) {  
  95.                             b.commentnum = Integer.parseInt(parseText(parser));  
  96.                         } else if (parser.getName().equals("time")) {  
  97.                             b.time = new Date(Long.parseLong(parseText(parser)) * 1000);  
  98.                         } else if (parser.getName().equals("pic")) {  
  99.                             b.pic = parseText(parser);  
  100.                         } else if (parser.getName().equals("source")) {  
  101.                             b.src = parseText(parser);  
  102.                         } else if (parser.getName().equals("longitude")) {  
  103.                             b.longitude = parseText(parser);  
  104.                         } else if (parser.getName().equals("latitude")) {  
  105.                             b.latitude = parseText(parser);  
  106.                         }  
  107.                         break;  
  108.                     case XmlPullParser.END_TAG:  
  109.                         if (parser.getName().equals("mblog")) {  
  110.                             break LOOP;  
  111.                         }  
  112.                         break;  
  113.                     default:  
  114.                         break;  
  115.                 }  
  116.             }  
  117.         }  
  118.         return b;  
  119.     } catch (Exception e) {  
  120.         throw new ParseException(PARSE_ERROR, e);  
  121.     }  
  122. }  

在Activity中这样调用:

[java]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. public void parseAssertData() {  
  2.         InputStream is = null;  
  3.         try {  
  4.             is = this.getAssets().open("11.xml", Context.MODE_PRIVATE);  
  5.             int length = is.available();  
  6.             byte[] buffer = new byte[length];  
  7.             is.read(buffer);  
  8.             String temp = new String(buffer);  
  9.   
  10.             try {  
  11.                 Object[] array = ParseData.getMBlogList(temp);  
  12.             } catch (HttpException e) {  
  13.                 e.printStackTrace();  
  14.             }  
  15.               
  16.         } catch (IOException ex) {  
  17.             ex.printStackTrace();  
  18.         }  
  19.     }  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值