android使用XmlPullParser来解析XML文件
解析以下的一个XML:
<?xml version="1.0" encoding="utf-8" ?> <rss><sid>77f265bb46de068e78f35afbadec62af</sid><count>3</count><control>0</control> <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>
这样来写解析:
public static Object[] getMBlogList(String content) throws HttpException { try { Object[] result = new Object[3]; List<MBlog> lst = new ArrayList<MBlog>(); result[1] = lst; final XmlPullParser parser = Xml.newPullParser(); parser.setInput(new StringReader(content)); int type; while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { switch (type) { <strong>case XmlPullParser.START_TAG:这里开始读取最外层的标签属性</strong> if (parser.getName().equals("count")) { try { result[0] = new Integer(parseText(parser)); } catch (Exception e) { result[0] = 0; } } else if (parser.getName().equals("mblog")) { MBlog mb = parseMBlog(parser); if (mb != null) lst.add(mb); } else if (parser.getName().equals("relation")) { result[2] = new Integer(parseText(parser)); } break; default: break; } } return result; } catch (NumberFormatException e) { throw new HttpException(e); } catch (XmlPullParserException e) { throw new HttpException(e); } catch (IOException e) { throw new HttpException(e); } catch (ParseException e) { throw new HttpException(e); } } private static String parseText(XmlPullParser parser) throws ParseException { try { int type = parser.next(); if (type == XmlPullParser.TEXT) { return replaceEntityRef(parser.getText().trim()); } else { return ""; } } catch (Exception e) { throw new ParseException(PARSE_ERROR, e); } } public static MBlog parseMBlog(XmlPullParser parser) throws ParseException { <strong>MBlog b = new MBlog();//这里开始读取每个MBlog对象</strong> try { int type; LOOP: { while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) { switch (type) { case XmlPullParser.START_TAG: if (parser.getName().equals("uid")) { b.uid = parseText(parser); if (b.uid.equals("")) return null; } else if (parser.getName().equals("favid")) { b.favid = parseText(parser); } else if (parser.getName().equals("mblogid")) { b.mblogid = parseText(parser); } else if (parser.getName().equals("nick")) { String s = parseText(parser); b.nick = s; } else if (parser.getName().equals("portrait")) { b.portrait = parseText(parser); } else if (parser.getName().equals("vip")) { b.vip = (parseText(parser).equals("1")) ? true : false; } else if (parser.getName().equals("content")) { b.content = parseText(parser); } else if (parser.getName().equals("rtrootuid")) { b.rtrootuid = parseText(parser); } else if (parser.getName().equals("rtrootid")) { b.rtrootid = parseText(parser); } else if (parser.getName().equals("rtrootnick")) { String s = parseText(parser); b.rtrootnick = s; } else if (parser.getName().equals("rtrootvip")) { b.rtrootvip = (parseText(parser).equals("1")) ? true : false; } else if (parser.getName().equals("rtreason")) { b.rtreason = parseText(parser); } else if (parser.getName().equals("rtnum")) { b.rtnum = Integer.parseInt(parseText(parser)); } else if (parser.getName().equals("commentnum")) { b.commentnum = Integer.parseInt(parseText(parser)); } else if (parser.getName().equals("time")) { b.time = new Date(Long.parseLong(parseText(parser)) * 1000); } else if (parser.getName().equals("pic")) { b.pic = parseText(parser); } else if (parser.getName().equals("source")) { b.src = parseText(parser); } else if (parser.getName().equals("longitude")) { b.longitude = parseText(parser); } else if (parser.getName().equals("latitude")) { b.latitude = parseText(parser); } break; case XmlPullParser.END_TAG: if (parser.getName().equals("mblog")) { break LOOP; } break; default: break; } } } return b; } catch (Exception e) { throw new ParseException(PARSE_ERROR, e); } }
在Activity中这样调用:
public void parseAssertData() { InputStream is = null; try { is = this.getAssets().open("11.xml", Context.MODE_PRIVATE); int length = is.available(); byte[] buffer = new byte[length]; is.read(buffer); String temp = new String(buffer); try { Object[] array = ParseData.getMBlogList(temp); } catch (HttpException e) { e.printStackTrace(); } } catch (IOException ex) { ex.printStackTrace(); } }
代码http://download.csdn.net/detail/baidu_nod/7689299
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。