前端之家收集整理的这篇文章主要介绍了
04 pull生成XML,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
- 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标签的子标签 name
- serializer.startTag(null,"name");
- serializer.text(person.getName());
- serializer.endTag(null,"name");
-
- // 设置person标签的子标签的age
- serializer.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;
- }
-
- }