`

Pull解析

    博客分类:
  • XML
 
阅读更多
1.首先在SD卡上新建一个测试文件夹
// 获取保存路径
	public File getFilePath() {
		File filePath = null;
		//判断SD卡存在与否
		if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
			filePath = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+ "/A_Test/test/");
			if (!filePath.isDirectory()) {//判断文件存在与否,不存在就创建
				filePath.mkdirs();
			}	
		} else {
			Toast.makeText(Main.this, "存储卡不存在,请插入卡!", 3000).show();
		}
		return filePath;
	}

注意:权限的添加:
<!-- SD卡写入 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.DELETE_CACHE_FILES" />
2.生成一个测试的XML文件
File file = new File(getFilePath() + "/test.xml");
if (!file.exists()) {// 如果文件不存在,就创建新文件
				System.out.println("文件不存在,马上创建!");
				List<PersonModel> personModel = new ArrayList<PersonModel>();
				personModel.add(new PersonModel(1001, "张三", (short) 30));
				personModel.add(new PersonModel(1002, "李四", (short) 18));
				personModel.add(new PersonModel(1003, "王二", (short) 21));
				CreateXML.createXML(file, personModel);
}
/**
 * 生成XML文件
 * 
 * @author lilin
 * @date 2011-9-26 上午08:36:08
 * @ClassName: CreateXML
 * @Description: TODO
 */
public class CreateXML {
	// 生成XML文件
	public static void createXML(File file, List<PersonModel> personModel)
			throws IllegalArgumentException, IllegalStateException, IOException {
		FileOutputStream outputStream = null;
		OutputStreamWriter writer = null;
		outputStream = new FileOutputStream(file);
		writer = new OutputStreamWriter(outputStream, "UTF-8");
		BufferedWriter writer2 = new BufferedWriter(writer);// 增加的缓存功能
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(writer2);
		serializer.setOutput(outputStream, "utf-8");
		serializer.startDocument("utf-8", true);
		serializer.startTag(null, "persons");
		for (PersonModel persons : personModel) {
			serializer.startTag(null, "person");
			serializer.attribute(null, "id", persons.getId().toString());
			
			serializer.startTag(null, "name");
			serializer.text(persons.getName());
			serializer.endTag(null, "name");
			
			serializer.startTag(null, "age");
			serializer.text(persons.getAge().toString());
			serializer.endTag(null, "age");
			
			serializer.endTag(null, "person");
		}
		serializer.endTag(null, "persons");
		serializer.endDocument();
		outputStream.close();
	}
}
3.解析XML
FileInputStream fileInputStream = new FileInputStream(file);
			List<PersonModel> personModel = PullXML.pullXML(fileInputStream);
			for (int i = 0; i < personModel.size(); i++) {
				System.out.println(personModel.get(i).getId() + "--"
						+ personModel.get(i).getName() + "--"
						+ personModel.get(i).getAge());
			}

/**
 * 解析XML
 * 
 * @author lilin
 * @date 2011-9-26 上午09:23:37
 * @ClassName: PullXML
 * @Description: TODO
 */
public class PullXML {
	public static List<PersonModel> pullXML(InputStream inStream)
			throws Throwable {
		List<PersonModel> persons = null;
		PersonModel person = null;
		/* 声明XML的pull解析器 */
		XmlPullParser parser = Xml.newPullParser();
		/* 声明编码方式 */
		parser.setInput(inStream, "UTF-8");
		int eventType = parser.getEventType();// 产生第一个事件
		while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件
			switch (eventType) {
			case XmlPullParser.START_DOCUMENT:// 0 文档开始事件
				persons = new ArrayList<PersonModel>();
				break;

			case XmlPullParser.START_TAG:// 2 开始元素
				String name = parser.getName();// 获取解析器当前指向的元素的名称
				if ("person".equals(name)) {
					person = new PersonModel();
					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;
	}
}

 

0
0
分享到:
评论

相关推荐

    android xml pull解析示例

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

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

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

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

    本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用...

    android 安卓xml pull解析

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

    Pull解析xml源码导入即可用

    本文将深入探讨Android中的Pull解析XML技术,以及如何利用模板快速实现XML的解析。 首先,理解XML Pull解析器的工作原理是至关重要的。在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动...

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

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

    android pull解析 创建xmlw文件

    在Android开发中,Pull解析是一种常用的XML解析方式,它提供了高效、线程安全的解析机制。本项目"android pull解析 创建xmlw文件"是一个完整的工程示例,旨在帮助开发者理解和应用XML Pull解析来创建XML文件,尤其是...

    android之Pull解析XML文件

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

    pull解析器的使用

    而Pull解析器则是一种轻量级的、事件驱动的XML解析方式,特别适合于资源有限的移动设备或嵌入式系统。本文将详细介绍如何使用Pull解析器来处理XML数据,并结合Junit进行测试,确保解析和生成XML文件的正确性。 首先...

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

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

    Android简单的pull解析

    Pull解析是一种轻量级的解析方式,适用于处理XML数据。本文将深入探讨Android中的Pull解析,以及如何利用它来解析本地的XML文件,包括天气信息和经纬度信息。 首先,让我们了解什么是Pull解析。Pull解析器...

    pull解析器解析XML工具类

    在Android开发中,由于其轻量级和低内存占用,Pull解析器常常被用来解析XML文档,尤其是在处理大数据量时,相比DOM和SAX解析器更为高效。 Pull解析器是一种事件驱动的解析方式,它不会一次性加载整个XML文档到内存...

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

    在Android开发中,由于其轻量级和高效的特点,Pull解析器成为了处理XML数据的一种常见方法。本篇文章将深入探讨如何在Android环境中使用内置的Pull解析器来解析和生成XML内容。 首先,我们需要理解什么是Pull解析器...

    android中使用PULL解析XML

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

    xml PULL解析的一个小例子

    在Android开发中,由于其轻量级和高效的特点,XML Pull解析器成为处理XML文档的一种常见方法。本DEMO主要展示了如何在Android项目中使用XML Pull解析技术。 XML Pull解析器的工作方式是基于事件驱动的,它会读取XML...

    使用Pull解析xml文件

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

    Pull解析与生成Xml

    本文将深入探讨“Pull解析”这一技术,它是处理XML文档的一种高效方式,特别适合内存有限的设备。我们将讲解如何使用Pull解析器读取本地XML文件,并生成一个新的、格式不同的XML文件。 Pull解析是一种事件驱动的...

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

    接下来,我们来看PULL解析,它是Android特有的解析方式,也基于事件驱动,但比SAX更轻量级,API设计更符合Android的编程风格。PULL解析器通过调用`PullParser`对象的`next()`方法,不断拉取下一个事件,直到没有更多...

    13pull解析xml天气信息

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

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

    Android系统提供了一种轻量级的XML解析方式——PULL解析器(Pull Parser),它适用于处理大型XML文档,因为它不需要像DOM解析器那样一次性加载整个XML文档到内存中。PULL解析器通过事件驱动的方式,按需解析XML文档...

Global site tag (gtag.js) - Google Analytics