Pull方式解析XML
1、XML文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>liming</name>
<age>30</age>
</person>
<person id="20">
<name>lixiangmei</name>
<age>25</age>
</person>
</persons>
2、实体类
package com.example.pullparsexml;
public class Person {
private Integer id;
private String name;
private Short age;
public Person(){}
public Person(Integer id, String name, Short age) {
this.id = id;
this.name = name;
this.age = age;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
@Override
public String toString() {
return "Person [age=" + age + ", id=" + id + ", name=" + name + "]";
}
}
3、代码实现
package com.example.pullparsexml;
import java.io.InputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
public class PullParseXML {
public static void save(List<Person> persons, Writer writer)
throws Throwable {
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(writer);
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.endTag(null, "persons");
serializer.endDocument();
writer.flush();
writer.close();
}
public static List<Person> getPersons(InputStream inStream)
throws Throwable {
List<Person> persons = null;
Person person = null;
XmlPullParser parser = Xml.newPullParser();
parser.setInput(inStream, "UTF-8");
int eventType = parser.getEventType();// 产生第一个事件
while (eventType != XmlPullParser.END_DOCUMENT) {// 只要不是文档结束事件
switch (eventType) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
String name = parser.getName();// 获取解析器当前指向的元素的名称
if ("person".equals(name)) {
person = new Person();
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;
}
}
分享到:
相关推荐
解析Xml有三种方式可选,sax ,dom ,pull ,,各有各的优点,但在android上是不推荐使用DOM来解析的 一般都用SAX和PULL 这两个性能相近, SAX的解析方式大家可以去看MARS的教程 讲的也比较好喔 PULL的话我个人觉得处理...
Pull解析器是一种轻量级的解析方式,它允许程序在解析XML时按需获取数据,而不需要一次性加载整个文档到内存,从而提高了效率和资源利用率。 首先,我们来了解XML的基本结构。XML文件由一系列元素构成,每个元素由...
上次已经说过使用Android sax解析xml,实际上还可以使用pull解析xml.这样的方式效率也是比较高的。pull不仅可以在Android上使用也可以用在javaee里面,需要的就是pull的jar包。这次的xml也使用上次的那个,如下所示 ...
该文章详细介绍了在Android环境下如何使用SAX和PULL解析XML,包括代码示例和步骤说明,对于初学者来说非常有帮助。 最后,压缩包中的"Weather"文件很可能是示例的天气预报XML数据。通过实际解析这个文件,你可以更...
总的来说,Pull解析XML是Android开发中的一种高效、灵活的数据解析方式。通过导入提供的源码模板,开发者可以快速集成XML解析功能,从而专注于业务逻辑,提高开发效率。对于需要处理XML数据的Android应用,这是一个...
总结,Android的Pull解析XML文件是一种高效、节省资源的解析方式,适用于网络通信中的数据交换。通过创建Pull解析器实例,监听XML事件,以及适当优化,开发者可以轻松处理XML数据,实现更流畅的用户体验。在实际开发...
pull解析xml文件
**使用PULL解析XML的步骤** 1. **引入库** 首先,在Android项目中,我们需要引入`xmlpull.org`的库,这个库已经被包含在Android SDK中,无需额外下载。在代码中,我们可以通过以下方式获取到PULL解析器: ```java ...
在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...
XML解析有三种方式 1,DOM 通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一...
在Android开发中,解析XML有多种方式,包括DOM(Document Object Model)、SAX(Simple API for XML)以及PULL(PULL Parser)。本篇文章将详细探讨PULL解析器,它是Android平台特有的一种轻量级、事件驱动的XML解析...
1. 使用SAX或PULL解析XML,当遇到需要处理的元素时,将相关信息保存到内存或写入新的XML文件。 2. 在解析过程中,根据处理的事件生成相应的XML元素。如果是开始元素,就创建一个新的元素;如果是结束元素,就关闭...
"Pull解析XML"是Android系统中处理XML文档的一种高效方法,相较于DOM(Document Object Model)和SAX(Simple API for XML),Pull解析器在内存占用和性能上有显著优势,尤其适合于移动设备资源有限的环境。...
在Android开发中,处理XML数据是常见的...总之,Android中的Pull解析XML是一种高效、轻量级的解决方案,特别适合资源有限的移动环境。通过理解和实践,开发者可以更好地处理XML数据,提高应用程序的性能和用户体验。
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
在Android开发中,"13pull解析xml天气信息"是一个典型的任务,涉及到网络数据获取、XML解析以及用户界面展示等多个方面。在这个例子中,开发者通常会利用Android的Pull解析器来处理XML数据,从而获取并显示天气预报...
标题中的“pull解析器通用解析XML与生成XML”是指一种基于Pull解析模型处理XML文档的技术。在Android系统中,XML Pull解析器是一个轻量级、高效的解析XML文档的工具,它不需要DOM(Document Object Model)或者SAX...
PULL解析器通过事件驱动的方式,按需解析XML文档,降低了内存消耗,提高了性能。 首先,让我们了解一下PULL解析器的基本概念。PULL解析器的工作原理是基于事件的,它会生成一系列的解析事件,如开始文档、开始元素...
接下来,我们来看PULL解析,它是Android特有的解析方式,也基于事件驱动,但比SAX更轻量级,API设计更符合Android的编程风格。PULL解析器通过调用`PullParser`对象的`next()`方法,不断拉取下一个事件,直到没有更多...
"Android pull解析xml源码"这个主题聚焦于使用Android的XML Pull解析器来理解和操作XML文档。Pull解析器是一种事件驱动的解析方法,与DOM(Document Object Model)和SAX(Simple API for XML)不同,它不需要将整个...