android pull解析器

本文介绍了Pull解析器在Android系统中的应用及其基本原理。通过示例详细展示了如何使用Pull解析器来解析XML文件,并提供了具体的Java代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pull解析器是Android系统中推荐使用对xml进行解析的一种方法。Pull解析器是一个开源的Java项目,

也可以用于javaEE项目中,但是必须加入架包,而在android开发中就不需要,因为SDK已经集成了。

要想清晰的对xml进行解析,必须得对xml结构有所了解,如下:

<?xml version = "1.0" encoding="UTF-8" ?>
<!-- START_DOCUMENT -->
<logs><!-- START_TAG -->
    <log id="1"><!-- START_TAG -->
        <name><!-- START_TAG -->
            dblog
        </name><!-- END_TAG -->
        <time>sss</time>
    </log><!-- END_TAG -->
    <log id="2">
        <name>filelog</name>
        <time>sss</time>
    </log>
</logs><!-- END_TAG -->
<!-- END_DOCUMENT -->

其中START_DOCUMENT是xml开始标志位,END_DOCUMENT是xml的结束标志位,在解析操作的

过程中,都是在其两者之间进行一系列的处理的。而START_TAG跟END_TAG是一对标签的标志。

解析xml的步骤:

1.获取pull解析器。Xml.newPullParser();

2.设置要解析的对象。parser.setInput(in, "UTF-8") 设置输入流以及编码

3.parser.next() 获取下一个解析事件,得到一个事件代码,那么这里所说的事件就是指在上面所写的xml

中的标志位。其实在pull解析器就类似于游标,利用标识符则可以实时的知道该xml被解析到那个位置。

那么就以上xml写出如下解析方法:

          public List<LogEntity>getXmlFileObject(InputStream xml) throws Exception{
             List<LogEntity> logs = null;
		LogEntity log = null;
		XmlPullParser pullParser = Xml.newPullParser();
		pullParser.setInput(xml, "UTF-8");
		int event = pullParser.getEventType();
		while (event != XmlPullParser.END_DOCUMENT) {
			switch(event){
			case XmlPullParser.START_DOCUMENT:
				logs = new ArrayList<LogEntity>();
				break;
			case XmlPullParser.START_TAG:
				if ("log".equals(pullParser.getName())) {
					log = new LogEntity();
					log.setId(Integer.parseInt(pullParser.getAttributeValue(0)));
				}
				if ("name".equals(pullParser.getName())) {
					log.setName(pullParser.nextText());
				}
				if ("time".equals(pullParser.getName())) {
					log.setTime(pullParser.nextText());
				}
				break;
			case XmlPullParser.END_TAG:
				if ("log".equals(pullParser.getName())) {
					logs.add(log);
				}
				break;
			}
			
			event = pullParser.next();
		}
		return logs;
	}


 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值