`
keeponmoving
  • 浏览: 112629 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android中使用PULL方式解析XML和XmlSerializer进行序列化

 
阅读更多

      XML解析方式一般有DOM解析,SAX解析,而Android中推荐的解析方式是PULL解析,以下是最近写的一个Demo中的关键代码。

import java.io.File;
import java.io.FileOutputStream;
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.os.Environment;
import android.util.Xml;

public class PersonXmlPullParserAndXmlSerializer {

	public ArrayList<Person> XmlPullParserTest() throws Exception {
		//创建一个InputStream通过反射得到当前累的对象然后getClassLoader().getResourceAsStream();
		InputStream is = PersonXmlPullParserAndXmlSerializer.class.getClassLoader().getResourceAsStream("persons.xml");
		//Xml.newPullParser()得到一个XmlPullParser
		XmlPullParser xpp = Xml.newPullParser();
		//设置要解析的目标和读取的编码
		xpp.setInput(is, "UTF-8");
		ArrayList<Person> listPerson = new ArrayList<Person>();
		Person p = null;
		for (int i = xpp.getEventType(); i != XmlPullParser.END_DOCUMENT; i = xpp.next()) {
			switch (i) {
			case XmlPullParser.START_TAG:
				if (xpp.getName() == "person") {
					String str = xpp.getAttributeValue(0);
					p = new Person();
					p.setId(Integer.parseInt(str));
				} else if (xpp.getName().equals("name")) {
					p.setName(xpp.nextText());
				} else if (xpp.getName().equals("age")) {
					p.setAge(Integer.parseInt(xpp.nextText()));
				}
				break;
			case XmlPullParser.END_TAG:
				//遍历Xml文件中一个对象,直到解析到这个对象的
				if (xpp.getName().equals("person")) {
					listPerson.add(p);
				}
				break;
			}
		}
		return listPerson;
	}

	public void XmlSerializerTest(List<Person> persons) throws Exception {
		OutputStream os = new FileOutputStream(new File(Environment.getExternalStorageDirectory(), "persons.xml"));
		XmlSerializer serializer = Xml.newSerializer();
		serializer.setOutput(os, "UTF-8");
		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.endDocument();
	}
}
 
0
1
分享到:
评论

相关推荐

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

    在Java中,我们可以使用`javax.xml.parsers.SAXParserFactory`和`org.xmlpull.v1.XmlPullParser`来实现Pull解析。以下是一个简单的示例: ```java SAXParserFactory factory = SAXParserFactory.newInstance(); ...

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

    在Android开发中,处理...总的来说,Android中的Pull解析器提供了一种高效、灵活的方式来处理XML数据,无论是读取还是生成。通过理解XML事件模型和使用Pull解析器提供的API,开发者可以轻松地实现XML的解析和生成任务。

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

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

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

    总结,Android中的Pull解析器是处理XML数据的有效工具,它适合读取大文件且内存效率高。而通过`XmlSerializer`,我们可以方便地生成XML内容。在实际项目中,结合这两种技术,开发者可以轻松地进行XML数据的读取和...

    Android 采用pull生成XML数据

    本篇文章将深入探讨如何在Android中使用Pull解析器生成XML数据。 Pull解析器是一种轻量级的解析方式,相比DOM(Document Object Model)和SAX(Simple API for XML),它更节省内存且效率更高。Pull解析器遵循事件...

    android xml多种解析生成

    本文介绍了 Android 中使用多种解析和生成 XML 文件的方法,包括 SAX、DOM 和 Pull 解析器,以及 XmlSerializer 序列化器。这些方法可以帮助开发者更好地处理 XML 文件,并且提高应用程序的性能。

    android pull解析 创建xmlw文件

    综上所述,"android pull解析 创建xmlw文件"的工程实例是学习和实践XML Pull解析在Android中创建XML文件的良好资源。通过这个项目,开发者可以深入理解XML Pull解析的工作原理,并掌握如何在Android中利用XML Pull...

    12xml序列化器

    在Android中,XML序列化通常有两种主要方法:使用标准的Java库和使用Android提供的特殊工具。 1. **标准Java库**:Java标准库提供了一种名为`java.io.ObjectOutputStream`和`java.io.ObjectInputStream`的机制,...

    Android review xml 解析 生成

    可以使用`javax.xml.transform.TransformerFactory`和`javax.xml.transform.dom.DOMSource`将DOM树转换为XML字符串,或者使用`org.xmlpull.v1.XmlSerializer`进行Pull方式的XML序列化。在Android中,我们还需要注意...

    Android网络下的XML解析和生成.

    2. Android的XmlSerializer:提供序列化功能,可以将Java对象转换成XML格式的字符串或写入到流中。例如,创建一个XmlSerializer对象,然后通过startDocument(), startTag(), text(), endTag()等方法来构建XML结构。 ...

    Android实现向本地写入一个XML文件和解析XML文件

    2. 使用XmlSerializer序列化XML文件 3. 设置XML文件的头,指定编码格式和版本号 4. 使用循环写入信息 5. 使用XmlPullParser解析XML文件 6. 指定解析的文件和编码格式 7. 使用while循环解析XML文件 8. 获得事件类型,...

    pull解析器

    总的来说,这段代码演示了如何在Android中使用Pull解析器从XML文件中读取数据以及如何保存数据到XML文件。Pull解析器在处理大型XML文档时特别有效,因为它不需要一次性加载整个文档,而是按需解析,降低了内存使用。...

    比较通用的xml解析方法_android源码.zip

    在Android中,可以使用Gson、Jackson或org.json等库进行JSON的解析和序列化。 了解和掌握这些XML解析方法对于Android开发者来说至关重要,可以根据实际需求和性能考虑选择合适的方法。同时,合理地利用XML可以提升...

    Pull解析方式

    序列化过程中,每个`Person`对象的属性都被转换成XML标签和文本节点。 #### 总结 Pull解析技术在处理XML数据时,提供了高效且灵活的方式。无论是读取还是写入XML,Pull解析器都能帮助开发者以较低的资源消耗完成...

    Android-chapter04XML.ppt

    在Android中,XML序列化是将对象转换为XML格式的过程,方便存储和传输。使用`XmlSerializer`可以实现这一过程。例如,创建一个XMLSerializer对象,设置输出流编码,然后调用开始和结束标签的方法来构建XML结构。 ...

    XML_xiliehua.zip

    Android中使用`DocumentBuilderFactory`和`DocumentBuilder`来创建`Document`对象,然后遍历树形结构进行数据获取。 - **SAX解析**:事件驱动,逐行读取XML,适用于大文件,内存占用小。Android通过`...

    Android访问XML

    - Android也提供了`XmlSerializer`类用于序列化对象为XML,通过调用`startDocument()`、`startTag()`、`text()`、`endTag()`等方法构建XML结构。 5. **实际应用**: - 在Android中,XML常用于布局文件、配置文件...

    Android序列化XML数据

    在Android中处理XML数据还涉及到解析XML的过程,可以使用PullParser或者SAX解析器等。当从网络接收或从文件读取XML数据时,这些解析器可以帮助将XML转换回对象。 总结,Android中的XML序列化是将对象转换为XML格式...

Global site tag (gtag.js) - Google Analytics