解析下面的一个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

android使用XmlPullParser来解析XML文件的更多相关文章

  1. android 生成、pull解析xml文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools= ...

  2. Android开发学习---使用XmlPullParser解析xml文件

    Android中解析XML的方式主要有三种:sax,dom和pull关于其内容可参考:http://blog.csdn.net/liuhe688/article/details/6415593 本文将 ...

  3. Android 解析XML文件和生成XML文件

    解析XML文件 public static void initXML(Context context) { //can't create in /data/media/0 because permis ...

  4. 【Android学习笔记】XmlResourceParser解析xml文件

    最近学习Android时,需要用到解析XML文件里的数据,可以用XmlResourceParser来解析xml文件,正好将此记录下来. XmlResourceParser里常用的字段和方法 首先先给出 ...

  5. Android pull解析xml文件

    本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...

  6. android——使用pull解析xml文件

    1.persons.xml 将persons.xml文件放到src目录下.其代码如下: <?xml version='1.0' encoding='UTF-8' standalone='yes' ...

  7. [android] 采用pull解析xml文件

    /***********2016年5月6日 更新**********************/ 知乎:Android 中有哪几种解析 xml 的类,官方推荐哪种 ? 以及它们的原理和区别? 刘吉财: ...

  8. Android解析XML文件

    XML文件和获取XML值 XML文件样例 <?xml version="1.0" encoding="utf-8"?> <citys> ...

  9. 【Android】使用Pull生成/解析XML文件

    一.生成XML文件,即是将对象集合转为XML文件存储. 对象集合 –> XML(序列化) Android中使用android.util.Xml类对其进行了描述,提供相应的API. 步骤大致如下: ...

随机推荐

  1. Codeforces 432D Prefixes and Suffixes(KMP+dp)

    题目连接:Codeforces 432D Prefixes and Suffixes 题目大意:给出一个字符串,求全部既是前缀串又是后缀串的字符串出现了几次. 解题思路:依据性质能够依据KMP算法求出 ...

  2. 【POJ3159】Candies 裸的pqspfa模版题

    不多说了.就是裸的模版题. 贴代码: <span style="font-family:KaiTi_GB2312;font-size:18px;">#include & ...

  3. MVC超链接

    <1> return RedirectToAction(Index); //跳转到Index控制器 <%@ Page Language="C#" Inherits ...

  4. win7系统u盘安装过程

    1.准备好带有启动项的U盘,并把镜像解压到里面去 2.插上u盘,开机长按del键进入bois设置界面 在boot页面 1.boot device priority->1st boot devic ...

  5. WPF界面设计技巧(8)—自制山寨版CheckListBox

    原文:WPF界面设计技巧(8)-自制山寨版CheckListBox 近年来IT市场山寨横行啊,我们今天也来发扬一下山寨精神,搞个自制的CheckListBox出来. 喏,CheckListBox 就是 ...

  6. 图像库---Image Datasets---OpenSift源代码---openSurf源代码

    1.Computer Vision Datasets on the web http://www.cvpapers.com/datasets.html 2.Dataset Reference http ...

  7. NVL NVL2 NVLIF

    ========Oracle=======NVL (expr1, expr2)->expr1为NULL,返回expr2:不为NULL,返回expr1.注意两者的类型要一致

  8. css实现背景渐变色效果

    webkit内核的浏览器,例如(chrome,safari等) background:-webkit-gradient(linear,0 0,0 100%,from(#000000),to(#ffff ...

  9. jps查看java进程中哪个线程在消耗系统资源

    jps或ps -ef|grep java可以看到有哪些java进程,这个不用说了.但值得一提的是jps命令是依赖于/tmp下的某些文件 的. 而某些操作系统,定期会清理掉/tmp下的文件,导致jps无 ...

  10. 【C/C++】BinarySearch

    /* * BinarySearch.c * * Created on: 2014年6月25日 * Author: wenbo */ #include <stdio.h> int binar ...