pull解析xml学习笔记

person.xml
<?xml version="1.0" encoding="utf-8"?>//文档开头,parser.next从这里开始
<Persons>//<>的内容就是xml的节点(element)
	<Person id="18">//id=“”节点的属性
		<name>allen</name>//allen 节点文本
		<age>36</age>
	</Person>
	<Person id="28">
		<name>james</name>
		<age>25</age>
	</Person>//文档结束
</Persons>
pull原理,基于事件进行解析,自上而下的解析,不能返回

1 在程序代码中使用,可以放入asserts目录下,就可以读取
2 创建业务bean(domain包或bean包),将节点信息存入
	为了业务严谨,在setAge中要设置年龄范围
	
3 
	
	public List<Person> getPersons(String filename){//filename 要解析的xml文件
		//获得asserts管理者
		AssertManager manager = context.getAsserts();
		//打开一个文件,获取文件的输入流
		InputStream is = manager.open("person.xml");
		//在ansroid使用Pull解析xml
		//1 获取pull解析器
		XMLPullParser parser = Xml.newPullParser();
		//2 解析解析器的一些参数
		parser.setInput(is , inputEncoding);
		//is 数据源 inputEncoding 编码格式
		//3 获取Pull解析器对应的事件类型
		int type = parser.getEventType();//这时,解析器在文档的开头
		Person person;
		List<Person> persons;
		//4 如果type不等于文档的结束
		while( type != parser.getEventType.END_DOCUMENT){
			if(type == XmlPullParser.START_TAG){//START_TAG某个元素开始的标签
				if("person".equals(parser.getName())){//getName()返回当前标签所对应的名字
					Person =new Person();
					int id =Integer.parseInt(person.getAttributeValue(0));//解析id的属性
					person.setId(id);
					
				}else if("name".equals(parser.getName())){
					String name = parser.nextText();
					person.setName(name);
				}
			}
			//判断是否到标签结尾,如果到结尾,就将文本内容添加到List<Person>
			if(type = XmlPullParser.END_TAG){
				if("person".equals(parser.getName())){
					persons.add(person);
				}
				
			}
			type = parser.next();
		}
		return persons;
	}
	


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值