解析以下的一个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文件的内容。