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内容案例...
一、使用Pull解析器读取XML文件 除了可以使用SAX或DOM解析XML文件之外,大家也可以使用Android内置的Pull解析器解析XML文件。 Pull解析器是一个开源的java项目,既可以用于android,也可以用于JavaEE。如果用在...
在Android平台上可以使用Simple API for XML(SAX) 、 Document Object Model(DOM)和Android附带的pull解析器解析XML文件。
通用性强,它会将XML文件的所有内容读取到内存中,然后使用DOM API遍历XML树、检索所需的数据; 优点:简单直观,但需要将文档读取到内存, 缺点:并不太适合移动设备; 2,SAX SAX是一个解析速度快并且占用内存少的...
解析XML文件:在Android平台上可以使用SAX、DOM和Android附带的pull解析器解析XML文件;pull解析器提供了各种事件,使用parser.next()方法进入下一个元素并触发相应事件,pull解析器产生的事件是一个数字,可以通过...
android给我们提供了xml 用来得到xmlpull解析器,将输入流传入 设定编码方式,pull读到xml后 返回数字 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 END_DOCUMENT ; 读取到xml的开始标签...
Android 程序技术 本节课程内容:习题详情显示 XML概述 XML概述 Summary of XML ...Android中已经集成了PULL解析器。 PULL解析 XML解析 XML parsing XmlPullParser.START_DOCUMENT:XML文档的开始,如<?xml
1. 概述 平常我们一般是使用JSON与服务器做数据通信,JSON的话,直接用GSON或者其他库...DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。再形象点,就是一棵树,
息,12_文件的保存与读取,13_文件的操作模式,14_把文件存放在SDCard,15_采用Pull解析器解析和生成XML内容,16_采 用SharedPreferences保存用户偏好设置参数,17_创建数据库与完成数据添删改查,18_在SQLite中...
息,12_文件的保存与读取,13_文件的操作模式,14_把文件存放在SDCard,15_采用Pull解析器解析和生成XML内容,16_采 用SharedPreferences保存用户偏好设置参数,17_创建数据库与完成数据添删改查,18_在SQLite中...
的 Android SDK 提供了在 Android 平台上使用 JaVa 语言进行 Android 应用开发必须的工具和 API 接口。 特性 • 应用程序框架 支持组件的重用与替换 • Dalvik Dalvik Dalvik Dalvik 虚拟机 专为移动设备优化 • ...
轻松快速地将XML(和JSON)解组到... 使得将XML文档解组到Java对象的速度非常快(sax / pull解析速度)。 为了避免使用有关xml解析的元数据污染模型类(无注释)。 避免其他构建时步骤(代码生成器等)。 很小的ja
15_采用Pull解析器解析和生成XML内容.avi 所在项目:xml 16_采用SharedPreferences保存用户偏好设置参数.avi 所在项目:SharedPreferences 17_创建数据库与完成数据添删改查.avi 所在项目:db 18_在SQLite中使用事务...
15_采用Pull解析器解析和生成XML内容.avi 所在项目:xml 16_采用SharedPreferences保存用户偏好设置参数.avi 所在项目:SharedPreferences 17_创建数据库与完成数据添删改查.avi 所在项目:db 18_在SQLite中使用事务...
10.1.3 从resource中的raw文件夹中读取文件 10.1.4 从asset中读取文件 10.2 SharedPreferences(键值数据存储) 10.3 SQLite语法 10.4 SQLite数据操作 10.4.1 SQLLiteOpenHelper类 10.4.2 数据库表的增删改查 10.4.3...
|--xml文件的pull解析与序列化写入 |--xml的封装序列化 |--任务循环之只在Activity显示时执行 |--修改文件的最后修改时间 |--偏好设置(回显) |--内存优化之各种方法 |--内容提供者之短信的序列化对象读写 |--内容...
15_采用Pull解析器解析和生成XML内容.avi 所在项目:xml 16_采用SharedPreferences保存用户偏好设置参数.avi 所在项目:SharedPreferences 17_创建数据库与完成数据添删改查.avi 所在项目:db 18_在SQLite中使用事务...