正文  软件开发 > 编程综合 >

android使用XmlPullParser来解析XML文件

解析以下的一个XML: 77f265bb46de068e78f35afbadec62af30119522459334369527955xtaJR3436952795005xtaJR马艳丽...

解析以下的一个XML:

 


77f265bb46de068e78f35afbadec62af30119522459334369527955xtaJR3436952795005xtaJR马艳丽http://tp2.sinaimg.cn/1195224593/50/5614100014/0101321125000000婚礼在北海美丽的北海公园举行…好美好浪漫的地方… http://ss12.sinaimg.cn/wap240/473dae11494344debfc5b彩信

这样来写解析:

 

 

	public static Object[] getMBlogList(String content) throws HttpException {
		try {
			Object[] result = new Object[3];
			List lst = new ArrayList();
			result[1] = lst;

			final XmlPullParser parser = Xml.newPullParser();
			parser.setInput(new StringReader(content));
			int type;
			while ((type = parser.next()) != XmlPullParser.END_DOCUMENT) {
				switch (type) {
					case XmlPullParser.START_TAG:这里开始读取最外层的标签属性
						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 {
		MBlog b = new MBlog();//这里开始读取每个MBlog对象
		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();
		}
	}