您好,欢迎访问一九零五行业门户网

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> <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> <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(); } }
以上就是android使用xmlpullparser来解析xml文件的内容。
其它类似信息

推荐信息