Service.java源码:
package com.sinaapp.ssun.service;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.*;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;
import android.util.Xml;
import com.sinaapp.ssun.domain.Person;
public class Service {
/**
* 获取XML文件中的数据
* @param xml
* @return
* @throws Exception
*/
public static List<Person> getPersons(InputStream xml) throws Exception {
List<Person> persons = null;
XmlPullParser parser = XmlPullParserFactory.newInstance()
.newPullParser();
// parser = Xml.newPullParser();
parser.setInput(xml, "UTF-8");
int event = parser.getEventType();
Person p = null;
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())){
p = new Person();
int id = Integer.parseInt(parser.getAttributeValue(0));
p.setId(id);
}
if("name".equals(parser.getName())){
String name = parser.nextText();
p.setName(name);
}
if("age".equals(parser.getName())){
int age = Integer.parseInt(parser.nextText());
p.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(parser.getName())){
persons.add(p);
p = null;
}
break;
}
event = parser.next();
}
return persons;
}
/**
* 保存数据到XML文件中
* @param persons
* @param out
* @throws Exception
*/
public static void save(List<Person> persons , 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: persons){
serializer.startTag(null, "person");
serializer.attribute(null, "person", p.getId()+"");
serializer.startTag(null, "name");
serializer.text(p.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(p.getAge()+"");
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
out.flush();
out.close();
}
}
Person.java源码:
package com.sinaapp.ssun.domain;
public class Person {
private String name;
private int age;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Person(String name, int age, int id) {
this.name = name;
this.age = age;
this.id = id;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + ", id=" + id + "]";
}
}
text.xml文件:
<!--test.xml-->
<?xml version="1.0" encoding="UTF-8"?><!-- 开始文档语法 -->
<persons>
<person id="1">
<name>ssun</name>
<age>19</age>
</person>
<person id="2">
<name>cobe</name>
<age>24</age>
</person>
</persons>
单元测试TestService.java源码:
package com.sinaapp.ssun.test;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.List;
import android.test.AndroidTestCase;
import android.util.Log;
import com.sinaapp.ssun.domain.Person;
import com.sinaapp.ssun.service.Service;
public class TestService extends AndroidTestCase {
private final String Tag = "Test";
public void testPersons() throws Exception{
List<Person> persons = Service.getPersons(this.getClass().getClassLoader().getResourceAsStream("test.xml"));
for(Person p : persons){
Log.i(Tag, p.toString());
}
}
public void testSave() throws Exception{
List<Person> persons = new ArrayList<Person>();
persons.add(new Person("www",19,23));
persons.add(new Person("hhh",19,3));
persons.add(new Person("qqq",19,24));
persons.add(new Person("ooo",19,25));
File file = new File(this.getContext().getFilesDir(),"test2.xml");
FileOutputStream out = new FileOutputStream(file);
Service.save(persons, out);
}
}
分享到:
相关推荐
本文将深入探讨如何在Android中使用Pull解析器解析XML文件。 一、XML Pull解析器简介 XML Pull解析器(XML Pull API)是一种基于事件驱动的解析模型,它不需预先加载整个XML文档,而是逐行读取,当遇到特定的XML...
pull解析xml文件,和sax和dom一样 都可以脱离android单独使用,pull和sax的原理一样,不一样的地方是pull读取xml文件后调用方法返回的是数字, 读取到xml的声明返回数字0 START_DOCUMENT; 读取到xml的结束返回数字1 ...
在Android中,使用SAX解析天气预报XML,我们需要创建一个继承自DefaultHandler的类,重写其中的startElement、endElement和characters等方法,以捕获XML中的节点信息。例如,当遇到"city"标签时,startElement方法会...
本文将深入探讨如何在Android中使用Pull解析器来处理XML文件,这是一种高效且节省资源的方式。 Pull解析器是Android提供的一个API,它允许应用程序通过事件驱动的方式解析XML文档。与SAX解析器类似,Pull解析器不...
本文将深入探讨如何在Android中使用PULL解析器(Pull Parser)来解析XML文档,这是一种轻量级且高效的解析方式。 **PULL解析器概述** PULL解析器(Pull Parsing)是一种事件驱动的解析模型,它不需要完整的XML文档...
在Android开发中,解析XML有多种方式,包括DOM(Document Object Model)、SAX(Simple API for XML)以及PULL(PULL Parser)。本篇文章将详细探讨PULL解析器,它是Android平台特有的一种轻量级、事件驱动的XML解析...
在Android开发中,处理XML数据是一项常见的任务,无论是从服务器获取数据还是本地资源,XML都是一个常用的数据交换格式。本文将深入探讨两种主要的XML解析技术:SAX(Simple API for XML)和PULL(Pull Parser)。这...
本教程将详细介绍如何在Android中利用Pull解析器(PullParser)来读取XML文件,这是一种高效且内存友好的方式。 首先,让我们了解什么是Pull解析器。Pull解析器是一种事件驱动的解析模型,它不创建整个XML文档树,...
pull解析xml文件
在Android系统中,XML Pull解析是一种轻量级且高效的解析XML文档的方法,它允许应用程序按需读取XML文档的节点,而无需加载整个文档到内存中。以下是关于Android XML Pull解析的详细知识讲解。 1. **XML Pull解析器...
在IT行业中,XML(eXtensible Markup Language)是一种重要的数据交换格式,广泛应用于网络通信、数据存储和配置文件等领域。本篇文章将深入探讨如何使用Pull解析器来读取XML文件,以及如何生成XML文件。Pull解析器...
Android ReadXmlByPull 使用Pull解析Xml文件.zip项目安卓应用源码下载Android ReadXmlByPull 使用Pull解析Xml文件.zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司开发项目...
在Android应用中,我们通常使用两种方式来解析XML:DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。 1. DOM解析: DOM解析器将整个XML文件加载到内存中,形成一个树形结构,可以方便地遍历...
本资源"ReadXmlByPull使用Pull解析Xml文件.zip"聚焦于Android中如何使用Pull解析器来读取XML数据。Pull解析器是一种轻量级、低内存占用的解析方式,尤其适合移动设备。 一、什么是Pull解析器? Pull解析器(Pull...
在Android开发中,处理XML数据是一项常见的任务,无论是读取配置文件、同步网络数据还是解析服务器返回的结果,都可能涉及到XML的解析。本教程将详细讲解如何使用Android的Pull解析器来读取XML文件,这是一种高效且...
在Android中,XML Pull解析是一种轻量级处理XML文档的方式,它允许应用移动通过XML文档的结构,而无需预先加载整个文档到内存。这使得解析大型XML文件成为可能,同时减少了对系统资源的需求。Android提供了名为`org....
通过老罗的Android视频教程,开发者可以学习到如何有效地解析XML文件,提升在Android开发中的数据处理能力。不论是DOM、SAX还是Pull解析,每种方法都有其适用场景,理解并熟练掌握这些技术,将对Android应用开发...
本主题将深入探讨如何使用Android中的Pull解析器(Pull Parser)来读取和解析XML文件。Pull解析器是一种事件驱动的解析方式,它不需要完整的XML文档加载到内存中,而是按需读取,降低了内存消耗。 首先,让我们理解...