安卓中的XML解析

pull解析

public static List<Newslist> getList(String xmlStr) {// 解析XML文件的方法,返回Newslist对象的集合
		List<Newslist> list = null;
		try {
			// XML解析器工厂实例
			XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
			// 获得解析器对象
			XmlPullParser parser = factory.newPullParser();

			Reader reader = new StringReader(xmlStr);// 读取字符串
			parser.setInput(reader);// 解析器解析读取的数据

			Newslist newslist = null;
			int type = parser.getEventType();// 获得解析的状态
			int i = 0;//判断解析的标签名的变量

			while (type != XmlPullParser.END_DOCUMENT) {

				switch (type) {

				case XmlPullParser.START_DOCUMENT:// 文档开始
					list = new ArrayList<Newslist>();// 创建集合
					break;
				case XmlPullParser.START_TAG:// 标签开始(标签里面如果有值,可以在这里面取)

					String str = parser.getName();

					if ("news".equals(str)) {
						// 创建对象,并且给id属性赋值          拿到标签里面的第一个属性的值(标签里面的值)
						newslist = new Newslist(Integer.parseInt(parser.getAttributeValue(0)));
					}
					if ("title".equals(str)) {
						i = 1;
					}
					if ("timelength".equals(str)) {
						i = 2;
					}

					break;

				case XmlPullParser.TEXT:// 标签之间的文本(标签之间有值需要在这里取值)
					if (i == 1) {
						newslist.setTitle(parser.getText());
					}
					if (i == 2) {
						newslist.setTimelength((Integer.parseInt(parser.getText())));
					}

					i=0;
					break;

				case XmlPullParser.END_TAG:// 标签结束
					if ("news".equals(parser.getName())) {
						list.add(newslist);// 添加到集合
					}

					break;

				default:
					break;
				}

				parser.next();// 进行下一个标签
				type = parser.getEventType();

			}

			return list;// 返回集合

		} catch (Exception e) {
			e.printStackTrace();
		}

		return null;


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值