`
364434006
  • 浏览: 591861 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

使用Pull解析和读取XML文件

阅读更多

在Android开发中,解析和读取xml是难免的.如何选择作为xml解析的工具类呢?因为是基于Android移动平台开发,那么内存就显得弥足珍贵了.

DOM、SAX、Pull,推荐使用SAX、Pull作为xml的解析工具类,它们比和Dom相比,解析速度要快,占用系统内存少.

Pull解析XML文件:

public static List<Person> parseXml(InputStream inStream)
			throws XmlPullParserException, IOException {
		List<Person> persons = null;
		Person person = null;
		// 使用Android提供的Xml创建pull解析器
		XmlPullParser xmlPullParser = Xml.newPullParser();
		// 设置流文件
		xmlPullParser.setInput(inStream, "UTF-8");
		// 产生第一个事件
		int eventType = xmlPullParser.getEventType();
		while (eventType != XmlPullParser.END_DOCUMENT) {// 如果不是文档末尾

			String tag = xmlPullParser.getName();//获取节点名
			Log.i(TAG, tag+"====>");
			switch (eventType) {
			case XmlPullParser.START_DOCUMENT:
				persons = new ArrayList<Person>();
				break;
			case XmlPullParser.START_TAG:
				if ("person".equals(tag)) {
					person = new Person();
					person.setPersonId(Integer.valueOf(xmlPullParser.getAttributeValue(0)));
				} else if ("name".equals(tag)) {
					//注意:这里获取文本元素是通过nextText()不是getText()
					person.setPersonName(xmlPullParser.nextText());
				} else if ("age".equals(tag)) {
					person.setPersonAge(Integer.valueOf(xmlPullParser.nextText()));
				}
				break;
			case XmlPullParser.END_TAG:
				if("person".equals(tag))
					persons.add(person);
				break;
			}
			eventType = xmlPullParser.next();// 推进到下一个元素,并触发事件
		}
		return persons;
	}

 写入Xml文件到Android系统:

public static void writeXml(List<Person> persons,OutputStream outStream) throws IllegalArgumentException, IllegalStateException, IOException{
		XmlSerializer xmlSerializer = Xml.newSerializer();
		xmlSerializer.setOutput(outStream, "UTF-8");
		xmlSerializer.startDocument("UTF-8", true);//--><?xml ... ?>
		xmlSerializer.startTag(null, "persons");
		for(Person person:persons){
			xmlSerializer.startTag(null, "person");
			xmlSerializer.attribute(null, "id", person.getPersonId().toString());
			
			xmlSerializer.startTag(null, "name");
			xmlSerializer.text(person.getPersonName());
			xmlSerializer.endTag(null, "name");
			
			xmlSerializer.startTag(null, "age");
			xmlSerializer.text(person.getPersonAge().toString());
			xmlSerializer.endTag(null, "age");
			
			xmlSerializer.endTag(null, "person");
		}
		xmlSerializer.endTag(null, "persons");
		xmlSerializer.endDocument();
		outStream.flush();//要刷新缓冲区
		outStream.close();
		Log.i(TAG, outStream.toString());
	}

 

分享到:
评论

相关推荐

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

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

    Android中,使用SAX和PULL解析天气预报XML

    该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...

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

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

    使用Pull解析xml文件

    XML(eXtensible Markup Language...总结,PULL解析器是Android开发中处理XML文件的一种高效手段,尤其适用于资源有限的移动环境。通过掌握其工作原理和使用方法,开发者可以更好地优化应用程序的性能,提高用户体验。

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

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

    Pull解析与生成Xml

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

    android xml pull解析示例

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

    android使用pull 解析xml文件源码

    pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...

    pull解析器解析XML工具类

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

    android中使用PULL解析XML

    本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...

    android之Pull解析XML文件

    本文将深入探讨如何在Android中使用Pull解析器来处理XML文件,这是一种高效且节省资源的方式。 Pull解析器是Android提供的一个API,它允许应用程序通过事件驱动的方式解析XML文档。与SAX解析器类似,Pull解析器不...

    在android中使用pull解析xml文件

    本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...

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

    XML Pull解析器在Android开发中广泛使用,尤其是在处理大型XML文件或实时数据流时,其效率和低内存占用是关键优势。掌握XML Pull解析和生成技术对于Android开发者来说是必备技能之一,能够提高应用的性能和用户体验...

    android SAX PULL 解析XML文件 代码 详解

    SAX解析适合大型XML文件和复杂结构,而PULL解析则适用于小型XML文件和简单结构。在提供的`SAXParseDemo`项目中,你可以找到具体的SAX解析实现,通过阅读和理解代码,可以更好地掌握这两种解析方法的使用。 总之,...

    Pull解析xml源码导入即可用

    在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动通过XML文档的结构,而无需预先加载整个文档到内存。这使得解析大型XML文件成为可能,同时减少了对系统资源的需求。Android提供了名为`org....

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

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

    13pull解析xml天气信息

    在Android开发中,"13pull解析xml天气信息"是一个典型的任务,涉及到网络数据获取、XML解析以及用户界面展示等多个方面。在这个例子中,开发者通常会利用Android的Pull解析器来处理XML数据,从而获取并显示天气预报...

    PULL解析xml的demo

    通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...

    Android ReadXmlByPull 使用Pull解析Xml文件.rar

    本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种高效且内存友好的方式。 首先,让我们了解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不创建整个XML文档树,...

    android 安卓xml pull解析

    本文将深入探讨Android中的XML Pull解析,包括基本概念、使用方法以及本地和网络XML数据的处理。 一、XML Pull解析基础 XML Pull解析是一种事件驱动的解析方式,它不像DOM解析那样一次性加载整个XML文档到内存中,...

Global site tag (gtag.js) - Google Analytics