android使用XmlPullParser来解析XML文件

互联网 17-2-20
解析以下的一个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);  		}  	}	
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文件的内容,更多相关内容请关注PHP中文网(www.php.cn)!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:android使用Gson来解析json

相关资讯