android下pull解析器讀取和保存xml文件

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);
}
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章