標籤:
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.annotation.SuppressLint;
import android.util.Xml;
import com.example.domain.Person;
/**
* @author wesley
* @version
* @date 2015年1月26日 上午11:32:09
*
*/
public class XmlService {
/**
* 讀取資料
* @param xml 要讀取的資料
* @return
* @throws Exception
*/
@SuppressLint("UseValueOf")
public static List<Person> readXml(InputStream xml) throws Exception{
List<Person> persons = null;
Person person = null;
//建立一個Pull執行個體
XmlPullParser pullParser = Xml.newPullParser();
//為Pull解析器設定要解析的XML資料
pullParser.setInput(xml, "UTF-8");
//得到第一個事件
int event = pullParser.getEventType();
//判斷是不是文檔結束事件
while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
if("person".equals(pullParser.getName())){
int id = new Integer(pullParser.getAttributeValue(0));
person = new Person();
person.setId(id);
}
if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
if("age".equals(pullParser.getName())){
int age = new Integer(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();
}
return persons;
}
/**
* 儲存資料
* @param persons 資料
* @param out 輸入方向
* @throws Exception
*/
public static void saveXml(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 person : persons){
serializer.startTag(null, "person");
serializer.attribute(null, "id", person.getId().toString());
serializer.startTag(null, "name");
serializer.text(person.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(person.getAge().toString());
serializer.endTag(null, "age");
serializer.endTag(null, "person");
}
//建立結束標籤
serializer.endTag(null, "persons");
//結束文檔
serializer.endDocument();
out.flush();
out.close();
}
}
安卓系列三(使用pull 方式解析xml檔案)