`

采用PULL解析XML

 
阅读更多
/*
	 * 读取
	 */
	public void testReadPull() throws ParserConfigurationException,
			SAXException, IOException, XmlPullParserException
	{

		PullXml sax = new PullXml();
		InputStream inStream = this.getClass().getClassLoader()
				.getResourceAsStream("secn.xml");
		List<Person> persons = sax.domParser(inStream);
		for (Person person : persons)
		{
			Log.i("SaxTest", String.valueOf(person.getName()));
		}
	}

	/*
	 * 保存
	 */
	public void testReadPullSave() throws ParserConfigurationException,
			SAXException, IOException, XmlPullParserException
	{

		FileOutputStream fos = this.getContext().openFileOutput("pull.xml", Context.MODE_APPEND);
		List<Person> persons = new ArrayList<Person>();
		persons.add(new Person(1,"xiaoli",(short)12));
		persons.add(new Person(1,"xiaoli",(short)12));
		persons.add(new Person(1,"xiaoli",(short)12));
		persons.add(new Person(1,"xiaoli",(short)12));
		persons.add(new Person(1,"xiaoli",(short)12));
		
		PullXml sax = new PullXml();
		sax.save(persons, fos);
		
		
	}
 /** * * @param persons 集合 * @param outStream 要输出到的地方 * @throws IllegalArgumentException * @throws IllegalStateException * @throws IOException */ public void save(List<Person> persons,OutputStream outStream) throws IllegalArgumentException, IllegalStateException, IOException{ XmlSerializer serializer = Xml.newSerializer(); serializer.setOutput(outStream, "utf-8"); serializer.startDocument("utf-8", true); serializer.startTag(null, "persons"); for(Person person:persons){ serializer.startTag(null, "person"); serializer.attribute(null, "id", String.valueOf(person.getId())); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(String.valueOf(person.getAge())); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); outStream.flush(); outStream.close(); } /** * 解析后并返回一个对象集合 * * @param inStream * xml输入流 * @return 解析后并返回一个对象集合 * @throws ParserConfigurationException * @throws SAXException * @throws IOException * @throws XmlPullParserException */ @SuppressWarnings("static-access") public List<Person> domParser(InputStream inStream) throws ParserConfigurationException, SAXException, IOException, XmlPullParserException { List<Person> persons = null; Person person = null; XmlPullParserFactory pullFactory = XmlPullParserFactory.newInstance(); XmlPullParser pullPerser = pullFactory.newPullParser(); pullPerser.setInput(inStream, "utf-8"); int eventType = pullPerser.getEventType(); while(eventType != XmlPullParser.END_DOCUMENT){ switch (eventType) { case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if("person".equals(pullPerser.getName())){ person = new Person(); person.setId(new Integer(pullPerser.getAttributeValue(0))); } if("name".equals(pullPerser.getName())){ person.setName(pullPerser.nextText()); }else if("age".equals(pullPerser.getName())){ person.setAge(new Short(pullPerser.nextText())); } break; case XmlPullParser.END_TAG: if("person".equals(pullPerser.getName())){ persons.add(person); } break; } eventType = pullPerser.next(); } return persons; }

 

分享到:
评论

相关推荐

    Pull解析xml源码导入即可用

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

    android之Pull解析XML文件

    接下来,我们将详细介绍Pull解析XML文件的过程。 1. **引入Pull解析器库** 在Android项目中,首先需要添加对`androidx.xml`库的依赖,确保解析器可用。在`build.gradle`文件中添加以下依赖: ```gradle ...

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

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

    pull解析xml文件

    pull解析xml文件

    android中使用PULL解析XML

    **使用PULL解析XML的步骤** 1. **引入库** 首先,在Android项目中,我们需要引入`xmlpull.org`的库,这个库已经被包含在Android SDK中,无需额外下载。在代码中,我们可以通过以下方式获取到PULL解析器: ```java ...

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

    Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用率。 首先,我们来了解XML的基本结构。XML文件由一系列元素构成,每个元素由...

    使用Pull解析xml文件

    PULL解析器是Android SDK中内置的一种解析XML的机制,特别适合于资源有限的移动设备。它通过事件驱动的方式解析XML文档,只在需要时读取数据,减少了内存消耗。PULL解析器的操作模式是拉(Pull)而非推(Push),...

    Pull 解析xml

    "Pull解析XML"是Android系统中处理XML文档的一种高效方法,相较于DOM(Document Object Model)和SAX(Simple API for XML),Pull解析器在内存占用和性能上有显著优势,尤其适合于移动设备资源有限的环境。...

    PULL解析xml的demo

    XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据;...Android自带的XML解析器,和SAX基本类似,也是事件驱动,不同的是PULL事件返回的是数值型

    android pull解析xml源码

    "Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...

    android使用pull 解析xml文件源码

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

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

    总之,Android提供了SAX和PULL两种解析XML的手段,开发者可以根据具体情况灵活选择。在内存有限或者需要高效处理大量XML数据的情况下,SAX可能是更好的选择;而在追求简洁代码和快速开发的场合,PULL解析则更为便捷...

    android xml pull解析示例

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

    13pull解析xml天气信息

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

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

    PULL解析器通过事件驱动的方式,按需解析XML文档,降低了内存消耗,提高了性能。 首先,让我们了解一下PULL解析器的基本概念。PULL解析器的工作原理是基于事件的,它会生成一系列的解析事件,如开始文档、开始元素...

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

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

    Android PULL解析XML

    本文将深入探讨如何使用PULL解析XML,并结合ButterKnife库进行视图绑定。首先,我们来理解什么是PULL解析。 PULL解析是一种事件驱动的解析方式,由Android SDK提供。它与SAX解析类似,但更适用于移动设备,因为内存...

    在android中使用pull解析xml文件

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

    Android 封装pull解析xml

    以下是一些关于封装Pull解析XML的关键知识点: 1. **创建XMLPullParser实例**: Android系统提供了`XmlPullParserFactory`类,通过`newInstance()`方法创建XMLPullParser的工厂对象,然后使用`newPullParser()`...

Global site tag (gtag.js) - Google Analytics