package com.kk.android.test;
import java.io.File;
import java.io.FileWriter;
import java.io.InputStream;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlSerializer;
import android.test.AndroidTestCase;
import android.util.Log;
import android.util.Xml;
/**
* 使用xmlpull库操作xml
* @author MyPC
*
*/
public class PullParserPersonTest extends AndroidTestCase {
private static final String TAG="PullParserPersonTest";
/**
* 解析xml
* @throws Exception
*/
public void testRead() throws Exception {
InputStream personFile=getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> personList = null;
Person person=null;
XmlPullParser parser=Xml.newPullParser();
parser.setInput(personFile, "utf-8");
int eventType=parser.getEventType(); //产生第一个事件
while(eventType!=XmlPullParser.END_DOCUMENT){
switch (eventType){
case XmlPullParser.START_DOCUMENT:
personList=new ArrayList<Person>();
break;
case XmlPullParser.START_TAG:
String tagName=parser.getName();//获取解析器当前指向的元素的名称
if("person".equals(tagName)){
person=new Person();
person.setId(Integer.valueOf(parser.getAttributeValue(0)));
}
if(person!=null){
if(tagName.equals("name")){
person.setName(parser.nextText());
}
if(tagName.equals("age")){
person.setAge(Integer.valueOf(parser.nextText()));
}
}
break;
case XmlPullParser.END_TAG:
if("person".equals(parser.getName())){
personList.add(person);
person=null;
}
break;
}
eventType=parser.next();
}
for(Person p:personList){
Log.i(TAG, p.toString());
}
}
/**
* 生成xml
* @throws Exception
*/
public void write()throws Exception{
File file=new File(getContext().getFilesDir(),"message.xml");
if(!file.exists())file.createNewFile();
Writer writer=new FileWriter(file);
XmlSerializer serializer=Xml.newSerializer();
serializer.setOutput(writer);
serializer.startDocument(null, true);
serializer.startTag(null, "message");
for(int i=0;i<100;i++){
serializer.startTag(null,"name");
serializer.attribute(null, "id", i+"");
serializer.text("name"+i);
serializer.endTag(null,"name");
serializer.startTag(null, "age");
serializer.text(i+"");
serializer.endTag(null, "age");
}
serializer.endTag(null, "message");
serializer.endDocument();
}
private class Person {
private Integer id;
private Integer age;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "id:"+id+" name:"+name+" age:"+age;
}
}
}