温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

android使用XmlPullParser来解析XML文件的示例

发布时间:2021-02-25 11:38:22 来源:亿速云 阅读:216 作者:清风 栏目:编程语言

这篇“android使用XmlPullParser来解析XML文件的示例”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“android使用XmlPullParser来解析XML文件的示例”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。

Android是什么

Android是一种基于Linux内核的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由美国Google公司和开放手机联盟领导及开发。

解析以下的一个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文件的示例”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI