package com.tu.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.os.Environment;
import android.test.AndroidTestCase;
import android.util.Xml;
public class TuTest extends AndroidTestCase {
public void test() {
// List<Person> persons = this.getPersonList();
// this.writeToLocal(persons);//寫到xml文件
System.out.println("-------->開始");
// List<Person> persons;
List<Person> persons = parseXmlFromLocal(new File(Environment.getExternalStorageDirectory(),"persons.xml"));
System.out.println("persons的size--->");
for(Person person : persons){
System.out.println(person.toString());;
}
}
/**
* 自己創建一個Person集合,用於測試寫到本地
* @return
*/
public List<Person> getPersonList(){
List<Person> persons = new ArrayList<Person>();
for(int i=0; i<20; i++){
Person person = new Person();
person.setId(i);
person.setAge(18+i);
person.setName("baby"+i);
persons.add(person);
}
return persons;
}
/**
* 把Person集合寫到本地的xml文件中
* @param persons
* @throws IOException
* @throws IllegalStateException
* @throws IllegalArgumentException
*/
public void writeToLocal(List<Person> persons) throws IllegalArgumentException, IllegalStateException, IOException {
BufferedOutputStream bos =
new BufferedOutputStream(new FileOutputStream(new File(Environment.getExternalStorageDirectory(),"persons.xml")));
System.out.println(Environment.getExternalStorageDirectory());
// StringBuilder sb = new StringBuilder();
XmlSerializer serializer = Xml.newSerializer();
serializer.setOutput(bos, "UTF-8");
serializer.startDocument("UTF-8", true);
serializer.startTag(null, "persons");
for(Person person : persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id",String.valueOf(person.getId()) );
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(String.valueOf(person.getAge()));
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
serializer.endTag(null, "persons");
serializer.endDocument();
bos.close();
}
public List<Person> parseXmlFromLocal(File xmlFile){
try {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(xmlFile));
XmlPullParser pullParser = Xml.newPullParser();
pullParser.setInput(bis, "utf-8");
int eventType = pullParser.getEventType();
List<Person> persons = null;
Person person = null;
System.out.println("1111111");
while(eventType != XmlPullParser.END_DOCUMENT){
switch (eventType) {
case XmlPullParser.START_TAG:
if(pullParser.getName().equals("persons")){
persons = new ArrayList<Person>();
}else if(pullParser.getName().equals("person")){
person = new Person();
person.setId(Integer.valueOf(pullParser.getAttributeValue(null, "id")));
}else if(pullParser.getName().equals("name")){
person.setName(pullParser.nextText());
}else if(pullParser.getName().equals("age")){
person.setAge(Integer.valueOf(pullParser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if(pullParser.getName().equals("person")){
System.out.println("33333333333");
persons.add(person);
}
break;
default:
break;
}
pullParser.next();
}
return persons;
} catch (Exception e) {
System.out.println("發生錯誤");
}
// bis.close();
return null;
}
}
class Person{
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int 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 + "]";
}
}
xml序列化到本地以及使用Pull解析xml
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.