`

用pull解析和生成xml简单实例

阅读更多

 

 

pull 解析也是事件驱动的,android中已经加入jar包,java使用时可以到官网加入jar包
//xml文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id="23">
		<name>liming</name>
		<age>30</age>
	</person>
	<person id="20">
		<name>lixiangmei</name>
		<age>25</age>
	</person>
</persons>

 

 

import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

import cn.itcast.domain.Person;

public class PULLPersonService {
	/**pull生成xml文件**/
	public static void save(List<Person> persons, Writer writer) throws Throwable{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(writer);
		serializer.startDocument("UTF-8", true);
		
		serializer.startTag(null, "persons");
		for(Person person : persons){
			serializer.startTag(null, "person");
			serializer.attribute(null, "id", person.getId().toString());
			
			serializer.startTag(null, "name");
			serializer.text(person.getName());
			serializer.endTag(null, "name");
			
			serializer.startTag(null, "age");
			serializer.text(person.getAge().toString());
			serializer.endTag(null, "age");
			
			serializer.endTag(null, "person");
		}
		serializer.endTag(null, "persons");		
		serializer.endDocument();
		writer.flush();
		writer.close();
	}
/**pull解析xml文件**/
	public static List<Person> getPersons(InputStream inStream) throws Throwable{
		List<Person> persons = null;
		Person person = null;
		XmlPullParser parser = Xml.newPullParser();
		parser.setInput(inStream, "UTF-8");
		int eventType = parser.getEventType();//产生第一个事件
		while(eventType!=XmlPullParser.END_DOCUMENT){//只要不是文档结束事件
			switch (eventType) {
			case XmlPullParser.START_DOCUMENT:
				persons = new ArrayList<Person>();
				break;
	
			case XmlPullParser.START_TAG:
				String name = parser.getName();//获取解析器当前指向的元素的名称
				if("person".equals(name)){
					person = new Person();
					person.setId(new Integer(parser.getAttributeValue(0)));
				}
				if(person!=null){
					if("name".equals(name)){
						person.setName(parser.nextText());//获取解析器当前指向元素的下一个文本节点的值
					}
					if("age".equals(name)){
						person.setAge(new Short(parser.nextText()));
					}
				}
				break;
				
			case XmlPullParser.END_TAG:
				if("person".equals(parser.getName())){
					persons.add(person);
					person = null;
				}
				break;
			}
			eventType = parser.next();
		}
		return persons;
	}
}
 

与sax不同的是pull只要对先获得一个事件类型然后用switch判断只要判断Tag,并用nextText获得文本

parser.next();循环

 

 

 

分享到:
评论

相关推荐

    使用Pull解析器读取XML文件和生成XML文件

    总的来说,使用Pull解析器读取和生成XML文件是一种高效且灵活的方法,尤其适合处理大型XML文档。通过掌握这一技术,开发者可以更好地处理XML数据,提高程序的性能和稳定性。在进行XML操作时,还需注意数据的正确性和...

    Pull解析与生成Xml

    我们将讲解如何使用Pull解析器读取本地XML文件,并生成一个新的、格式不同的XML文件。 Pull解析是一种事件驱动的解析方法,它不像DOM解析那样将整个XML文档加载到内存中,而是按需逐个处理XML元素。这种方法节省了...

    android xml pull解析示例

    在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...

    使用pull解析器解析和生成xml文件

    本文将深入探讨如何使用Pull解析器来解析和生成XML文件,特别关注Android环境下的应用。 ### Pull解析器概述 Pull解析器是一种事件驱动型的XML解析器,它允许开发者通过一系列的事件来读取和解析XML文档。与SAX...

    pull解析器通用解析XML与生成XML

    标题中的“pull解析器通用解析XML与生成XML”是指一种基于Pull解析模型处理XML文档的技术。在Android系统中,XML Pull解析器是一个轻量级、高效的解析XML文档的工具,它不需要DOM(Document Object Model)或者SAX...

    采用pull解析器解析和生成xml内容

    本篇文章将深入探讨如何在Android环境中使用内置的Pull解析器来解析和生成XML内容。 首先,我们需要理解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不像SAX解析器那样需要开发者提供回调方法,而是...

    Pull解析xml源码导入即可用

    在标题和描述中提到的“Pull解析xml源码导入即可用”,意味着已经提供了一个预编写的XML Pull解析模板。这个模板可能包含了实现`XmlPullParser`接口的类,封装了XML解析的核心逻辑,如事件处理(如开始标签、结束...

    Pull解析器解析和生成XML内容

    为了更好地学习这一知识点,你可以参考`15_采用Pull解析器解析和生成XML内容.avi`这个视频教程,它将详细演示如何实际操作XML Pull解析器。通过观看和跟随教程,相信你将能够快速上手并熟练运用XML Pull解析器进行...

    pull解析器解析XML工具类

    本文将详细介绍基于Pull解析器的XML解析生成工具类的实现,以及如何将XML文件转换为对象和将对象转换为XML文件。 1. **XML解析器的初始化** 在使用Pull解析器之前,首先需要通过`XmlPullParserFactory`工厂类创建`...

    android下的pull解析器解析和生成xml文件

    本篇将深入探讨Android下Pull解析器的使用,以及如何利用它来解析和生成XML文件。 一、Android Pull解析器简介 Pull解析器是基于事件驱动的解析模型,它不保留整个XML文档的内存映像,而是按需读取和处理XML元素。...

    使用Android自带的XML解析器PULL解析器简单的解析xml

    下面是一个简单的使用PULL解析器解析XML并显示内容在`TextView`上的步骤: 1. 引入必要的库:在Android项目中,`XmlPullParser`是内置的,无需额外导入库。 2. 创建`XmlPullParser`实例:通常,我们可以使用`...

    Android 生成和PULL解析xml

    生成XML文件可以方便地存储和传输数据,而PULL解析器则提供了一种高效、低内存消耗的方式来解析XML数据。理解并熟练掌握这些技术对于Android开发者来说至关重要,尤其是在处理大量XML数据或进行网络通信时。在实际...

    xml PULL解析的一个小例子

    以下是创建和初始化XML Pull解析器的基本步骤: ```java XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); factory.setNamespaceAware(true); XmlPullParser parser = factory.newPullParser()...

    android之Pull解析XML文件

    在Android开发中,XML...通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发中,结合具体的业务场景灵活运用,能够大大提高应用程序的性能和稳定性。

    通过SAX和PULL来解析XML,同时生成xml

    XML(eXtensible Markup Language)是一种用于存储和...通过阅读指定的博客文章(http://www.cnblogs.com/tianzhijiexian/p/4020250.html),你可以找到更多关于如何结合使用SAX和PULL解析XML并生成新XML的详细信息。

    13pull解析xml天气信息

    4. **创建Pull解析器实例**:在Android中,使用`XmlPullParserFactory`来创建`XmlPullParser`实例。然后设置解析模式,通常是`START_DOCUMENT`到`END_DOCUMENT`,并注册事件监听器以处理XML节点。 5. **解析XML数据...

    android 安卓xml pull解析

    在Android系统中,XML解析主要有两种方式:DOM解析和PULL解析。本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动...

    Android中使用pull解析器操作xml文件的解决办法

    在Android开发中,处理XML数据是一项常见的任务,而Android提供了内置的Pull解析器来高效地读取和生成XML文件。本文将详细介绍如何使用Pull解析器来操作XML。 首先,我们来理解什么是Pull解析器。Pull解析器是一种...

    Android利用pull生成xml文件

    Pull解析器是一种轻量级、低级别的解析机制,与DOM(文档对象模型)和SAX(简单API for XML)解析器相比,它更节省内存,适用于处理大量XML数据。 首先,我们需要了解什么是Pull解析器。Pull解析器是一种事件驱动的...

    使用Pull解析xml文件

    本篇文章将详细探讨PULL解析器,它是Android平台特有的一种轻量级、事件驱动的XML解析方法。 1. **PULL解析器介绍** PULL解析器是Android SDK中内置的一种解析XML的机制,特别适合于资源有限的移动设备。它通过...

Global site tag (gtag.js) - Google Analytics