04 pull生成XML

来源:互联网 发布:linux libevent 安装 编辑:程序博客网 时间:2024/04/30 17:18
package com.example.lession04_pull.service;import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import org.xmlpull.v1.XmlPullParser;import org.xmlpull.v1.XmlSerializer;import android.os.Environment;import android.util.Xml;import com.example.lession04_pull.domain.Person;public class PullXmlService {public Person currentPerson;public List<Person> readXml(InputStream is){//声明返回值List<Person> persons=null;//首先利用Xml.newPullParser()获取解析对象XmlPullParser xmlPullParser=Xml.newPullParser();try{// 解析文件xmlPullParser.setInput(is, "UTF-8");//获取解析的事件类型int eventType=xmlPullParser.getEventType();//判断文件解析的是否完毕while(eventType!=XmlPullParser.END_DOCUMENT){switch (eventType) {case XmlPullParser.START_DOCUMENT:persons=new ArrayList<Person>();break;case XmlPullParser.START_TAG:String tagName=xmlPullParser.getName();if("person".equals(tagName)){//创建person对象currentPerson=new Person();currentPerson.setId(Integer.parseInt(xmlPullParser.getAttributeValue(null, "id")));}else if("name".equals(tagName)){currentPerson.setName(xmlPullParser.nextText());}else if("age".equals(tagName)){currentPerson.setAge(new Short(xmlPullParser.nextText()));}break;case XmlPullParser.END_TAG:if("person".equals(xmlPullParser.getName()) && currentPerson!=null){//把person对象放到集合中去persons.add(currentPerson);currentPerson=null;}break;}eventType=xmlPullParser.next();}is.close();}catch(Exception e){e.printStackTrace();}return persons;}// 写入public boolean write(List<Person> persons) {// 采用pull解析进行实现if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {// 获取sdcard目录 文件对象File sdCardDir = Environment.getExternalStorageDirectory();// 创建文件File file = new File(sdCardDir, "mycsdn.xml");XmlSerializer serializer = Xml.newSerializer();FileOutputStream fos = null;try {// 根据文件对象创建一个文件的输出流对象fos = new FileOutputStream(file);// 设置输出的流及编码serializer.setOutput(fos, "UTF-8");// 设置文件的开始serializer.startDocument("UTF-8", true);// persons标签开始serializer.startTag(null, "persons");for (Person person : persons) {// person标签的开始serializer.startTag(null, "person");// 设置person标签的属性serializer.attribute("null", "id", person.getId() + "");// 设置person标签的子标签 nameserializer.startTag(null, "name");serializer.text(person.getName());serializer.endTag(null, "name");// 设置person标签的子标签的ageserializer.startTag(null, "age");serializer.text(person.getAge() + "");serializer.endTag(null, "age");// person标签的结束serializer.endTag(null, "person");}// persons标签的结束serializer.endTag(null, "persons");// 文件的结束serializer.endDocument();fos.flush();fos.close();return true;} catch (Exception e) {e.printStackTrace();}}return false;}}

0 0
原创粉丝点击