您的位置:首页 > 移动开发 > Android开发

android利用Pull解析器解析、生成XMl文件

2013-07-30 14:22 781 查看
—————————————————————————————————xml文件内容

<?xml version="1.0" encoding="UTF-8"?>//startdocument
<persons>
<person id="23">
<name>liming</name>
<age>30</age>
</person>
<person id="20">
<name>zhangxiaoxiao</name>
<age>25</age>
</person>
</persons>


———————————————————————————————service文件内容

package com.example.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.XmlPullParserFactory;
import org.xmlpull.v1.XmlSerializer;

import android.util.Xml;

import com.example.domain.Person;

public class PersonService {
public static List<Person> getPersons(InputStream xml) throws Exception{
List<Person> persons=null;
Person person=null;
XmlPullParser pullParser=Xml.newPullParser();
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;

}
public static void save(List<Person> persons,OutputStream out) throws Exception{
XmlSerializer serializer=Xml.newSerializer();//1、生成xml序列化器
serializer.setOutput(out, "UTF-8");//2、设置内容输出方向(输出流,编码规则)

serializer.startDocument(null, true);//3、设置xml文件的startdocument(encoding属性值,是否可单独存在)

serializer.startTag(null, "Persons");//5、设置starttag(命名空间,标签名称)

for(Person person:persons){//for循环迭代
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");//6、endtag

serializer.endDocument();//4、设置xml文件的enddocument
out.flush();//缓冲输入流
out.close();
}
}
—————————————————————————————test方法内容

package com.example.test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.example.domain.Person;
import com.example.service.PersonService;

import android.test.AndroidTestCase;
import android.util.Log;

public class PersonServiceTest extends AndroidTestCase {
private static final String TAG="PersonServiceTest";

public void testPersons() throws Exception{
InputStream xml= this.getClass().getClassLoader().getResourceAsStream("person.xml");
List<Person> persons= PersonService.getPersons(xml);
for(Person person:persons){
Log.i(TAG, person.toString());

}
}
public void testSave() throws Exception{
List<Person> persons=new ArrayList<Person>();//2、new一个集合

persons.add(new Person(43,"xingm",80));//3、往集合中添加元素
persons.add(new Person(33,"adfb",88));
persons.add(new Person(22,"jhde",76));

File xmlFile =new File(getContext().getFilesDir(),"xmltext.xml");
FileOutputStream outStream = new FileOutputStream(xmlFile);//4、new一个文件输出流对象

PersonService.save(persons, outStream);//1、调用save方法
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: