person.xml
----------------------------------------------
<?xml version="1.0" encoding="utf-8" ?>
<persons>
<person id="zs">
<name>張三</name>
<age>22</age>
</person>
<person id="ls">
<name>李四</name>
<age>24</age>
</person>
</persons>
Person.java
---------------------------------------------
package cn.zzu.edu.model;
public class Person {
private String id;
private String name;
private int age;
public String getId() {
return id;
}
public void setId(String id) {
this.id = 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;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
public Person(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Person(){
}
}
PersonService.java
---------------------------------------------------------
package cn.zzu.edu.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 cn.zzu.edu.model.Person;
public class PersonService {
List<Person> personList = null;
Person person = null;
//讀取xml中的數據
public List<Person> getPersonList(InputStream xmlInputStream)
throws Exception {
// 方法一
// XmlPullParser
// xmlPullParser=XmlPullParserFactory.newInstance().newPullParser();
// 添加xml解析器
XmlPullParser xmlPullParser = Xml.newPullParser();
// 爲pull解析器設置xml文件
xmlPullParser.setInput(xmlInputStream, "utf-8");
int event = xmlPullParser.getEventType();
while (event != XmlPullParser.END_DOCUMENT) {
switch (event) {
case XmlPullParser.START_DOCUMENT:
personList = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if ("person".equals(xmlPullParser.getName())) {
person = new Person();
String id = xmlPullParser.getAttributeValue(0);
person.setId(id);
break;
}
if ("name".equals(xmlPullParser.getName())) {
String name = xmlPullParser.nextText();
person.setName(name);
break;
}
if ("age".equals(xmlPullParser.getName())) {
int age = Integer.parseInt(xmlPullParser.nextText());
person.setAge(age);
break;
}
case XmlPullParser.END_TAG:
if ("person".equals(xmlPullParser.getName())) {
personList.add(person);
person = null;
}
break;
}
event = xmlPullParser.next();
}
return personList;
}
//保存數據到xml文件中
public void saveXml(List<Person> personList,OutputStream os) throws Exception{
XmlSerializer xmlSerializer=Xml.newSerializer();
xmlSerializer.setOutput(os, "utf-8");
xmlSerializer.startDocument("utf-8", true);
xmlSerializer.startTag(null, "persons");
for(Person person:personList){
xmlSerializer.startTag(null, "person");
xmlSerializer.attribute(null,"id", person.getId().toString());
xmlSerializer.startTag(null, "name");
xmlSerializer.text(person.getName());
xmlSerializer.endTag(null, "name");
xmlSerializer.startTag(null, "age");
xmlSerializer.text(person.getAge()+"");
xmlSerializer.endTag(null, "age");
xmlSerializer.endTag(null, "person");
}
xmlSerializer.endTag(null, "persons");
xmlSerializer.endDocument();
os.flush();
os.close();
}
}
PersonServiceTest.java
----------------------------------------------------
package cn.zzu.edu.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.test.AndroidTestCase;
import android.util.Log;
import cn.zzu.edu.model.Person;
import cn.zzu.edu.service.PersonService;
public class PersonServiceTest extends AndroidTestCase{
public static final String TAG="PersonServiceTest";
public void testPersonService() throws Exception{
InputStream personXml=this.getClass().getClassLoader().getResourceAsStream("person.xml");
PersonService ps=new PersonService();
List<Person> personList=ps.getPersonList(personXml);
for(Person person:personList){
Log.i(TAG, person.toString());
}
}
public void testSaveXml() throws Exception{
List<Person> personList=new ArrayList<Person>();
personList.add(new Person("nihao","zhangsan",8));
personList.add(new Person("dfdf","zhang",68));
personList.add(new Person("ao","zhangn",83));
PersonService ps=new PersonService();
File file=new File(this.getContext().getFilesDir(),"xxx.xml");
FileOutputStream fos=new FileOutputStream(file);
ps.saveXml(personList, fos);
}
}