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
    评论
PULL解析是一种基于事件驱动的解析方式,它逐行读取XML文档并触发事件,开发人员可以根据需要处理这些事件。相比于DOM解析方式,PULL解析方式更加轻量级和高效,适用于处理大型XML文件。 以下是使用PULL解析方式解析XML文件的基本步骤: 1. 创建一个XmlPullParser实例,该实例可以从一个输入流中读取XML文档。例如,可以使用以下代码创建一个XmlPullParser实例: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser parser = factory.newPullParser(); parser.setInput(inputStream, null); ``` 2. 通过解析器读取XML文档中的每个元素,并在需要的时候处理它们。例如,可以使用以下代码循环读取XML文档中的每个元素: ```java int eventType = parser.getEventType(); while (eventType != XmlPullParser.END_DOCUMENT) { if (eventType == XmlPullParser.START_TAG) { // 开始标签 String tagName = parser.getName(); if (tagName.equals("book")) { // 处理book元素 String bookName = parser.getAttributeValue(null, "name"); } } else if (eventType == XmlPullParser.END_TAG) { // 结束标签 } else if (eventType == XmlPullParser.TEXT) { // 元素内容 String text = parser.getText(); } eventType = parser.next(); } ``` 3. 根据需要处理每个元素。例如,可以使用上面的代码来处理book元素并获取它的name属性。 注意:在处理XML文档时,可能会遇到异常情况,例如XML语法错误或无法打开输入流。因此,开发人员需要在代码中捕获这些异常并进行处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值