`
chenyunhong
  • 浏览: 140399 次
  • 性别: Icon_minigender_1
  • 来自: 真的不知道
社区版块
存档分类
最新评论

Android中使用Pull解析器读取XML文件

 
阅读更多

 

        Android中内置的Pull解析器,因此可以使用Pull解析器解析XML文件。 Pull解析器的运行方式与 SAX 解析器相似。它提供了类似的事件,如:开始元素和结束元素事件,使用parser.next()可以进入下一个元素并触发相应事件。事件将作为数值代码被发送,因此可以使用一个switch对感兴趣的事件进行处理。当元素开始解析时,调用parser.nextText()方法可以获取下一个Text类型元素的值。


直接贴出解析和读取代码:

 

package com.cyh.service;

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

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

import android.util.Xml;

import com.cyh.domain.Person;

public class PersonService {
	
	/**
	 * 解析XML Pull破解器方法
	 * @param xml
	 * @return
	 * @throws Exception
	 */
	public static List<Person> getPersons(InputStream xml) throws Exception{
		List<Person> persons = null;
		Person person = null;
//		XmlPullParser parser = XmlPullParserFactory.newInstance().newPullParser();
		XmlPullParser parser = Xml.newPullParser();
		//为Pull破解器设置要解析的XML
		parser.setInput(xml, "UTF-8");
		int event = parser.getEventType();
		while(event != XmlPullParser.END_DOCUMENT){
			switch (event){
				case XmlPullParser.START_DOCUMENT:
					persons = new ArrayList<Person>();
					break;
				case XmlPullParser.START_TAG:
					if("person".equals(parser.getName())){
						person = new Person();
						int id = Integer.parseInt(parser.getAttributeValue(0));
						person.setId(id);
					}
					if("name".equals(parser.getName())){
						String name = parser.nextText();
						person.setName(name);
					}
					if("age".equals(parser.getName())){
						int age = Integer.parseInt(parser.nextText());
						person.setAge(age);
					}
					break;
				case XmlPullParser.END_TAG:
					if("person".equals(parser.getName())){
						persons.add(person);
						person = null;
					}
					break;
			}
			event = parser.next();
		}
		return persons;
	}
	
	/**
	 * 保存数据到XML文件中
	 * @param list
	 * @param out
	 * @throws Exception
	 */
	public static void save(List<Person> list, OutputStream out) throws Exception{
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(out, "UTF-8");
		serializer.startDocument("UTF-8", true);//文档开始
		serializer.startTag(null, "persons");
		for(Person p:list){
			serializer.startTag(null, "person");
			serializer.attribute(null, "id", p.getId().toString());
			
			serializer.startTag(null, "name");
			serializer.text(p.getName());
			serializer.endTag(null, "name");
			
			serializer.startTag(null, "age");
			serializer.text(p.getAge().toString());
			serializer.endTag(null, "age");
			
			serializer.endTag(null, "person");
		}
		serializer.endTag(null, "persons");
		serializer.endDocument();//文档结束
		out.flush();
		out.close();
	}
}
分享到:
评论

相关推荐

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

    在Android中,使用Pull解析器读取XML文件的步骤如下: 1. 获取输入流:通常是从文件、网络或者其他数据源获取XML内容的InputStream。 2. 创建解析器:通过`XmlPullParserFactory`的静态方法`newInstance()`创建`...

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

    PULL解析器同样逐行读取XML,但开发者需要主动调用next方法前进到下一个事件。这种方式易于理解和实现,适合简单的XML结构。在解析天气预报XML时,我们首先需要创建PullParser对象,然后通过nextTag()方法遍历XML,...

    android xml pull解析示例

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

    Android中采用Pull解析器读取和生成xml内容案例

    要使用Pull解析器读取XML内容,首先需要导入相应的库,即`android.util.Xml`。以下是一个简单的读取示例: ```java XMLPullParserFactory factory = XMLPullParserFactory.newInstance(); XMLPullParser parser = ...

    android中使用PULL解析XML

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

    在android中使用pull解析xml文件

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

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

    Android中的Pull解析器实现了XMLPullParser接口,该接口定义了一系列的方法来处理XML文档中的事件,如开始文档、开始标签、结束标签等。 二、解析XML文件 1. 引入依赖:首先,在项目中导入必要的库,通常是在...

    Android ReadXmlByPull 使用Pull解析Xml文件-IT计算机-毕业设计.zip

    本文将深入探讨如何在Android中使用Pull解析器读取XML文件,并结合提供的源码Demo进行分析。 首先,让我们理解什么是XML Pull解析。XML Pull解析是一种轻量级的解析方式,它允许开发者顺序地读取XML文档,就像遍历...

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

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

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

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

    android之Pull解析XML文件

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

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

    以上就是Android使用Pull解析器读取XML文件的基本流程。通过这种方式,开发者可以高效地处理XML数据,同时避免了DOM解析器可能导致的内存问题。Pull解析器适用于那些需要逐个处理XML元素,而不需要一次性加载整个...

    Android解析xml(3)---Pull解析

    本篇文章将重点讨论如何在Android中使用Pull解析器(PullParser)来解析XML文件。Pull解析器是一种事件驱动的解析方式,它允许应用程序在解析过程中按需获取XML数据,而不是一次性加载整个文档到内存,这使得处理...

    android Pull XML文件解析 存取 代码程序

    本篇文章将深入探讨如何在Android中使用Pull解析器进行XML文件的解析和存取。 一、XML解析器简介 在Android中,有两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是事件驱动...

    使用Pull解析xml文件

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

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

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

    Android 生成和PULL解析xml

    本文将深入探讨如何在Android中生成XML文件以及如何使用PULL解析器来解析XML数据。 首先,我们来看一下如何在Android中生成XML文件。生成XML文件通常涉及创建一个XMLWriter对象,然后通过调用其方法来添加元素、...

Global site tag (gtag.js) - Google Analytics