zoukankan      html  css  js  c++  java
  • 使用Pull解析器读取XML文件

      1 package com.gnnuit.service;
      2 
      3 import java.io.File;
      4 import java.io.FileOutputStream;
      5 import java.io.InputStream;
      6 import java.util.ArrayList;
      7 import java.util.List;
      8 
      9 import org.xmlpull.v1.XmlPullParser;
     10 import org.xmlpull.v1.XmlSerializer;
     11 
     12 import com.gnnuit.domain.Person;
     13 
     14 import android.content.Context;
     15 import android.content.res.AssetManager;
     16 import android.os.Environment;
     17 import android.util.Xml;
     18 import android.widget.Toast;
     19 
     20 /**
     21  * 使用Android的Pull解析器对XML文件进行解析
     22  * 
     23  * @author 杨伦义
     24  * 
     25  */
     26 public class XmlService {
     27     private Context context;
     28 
     29     public XmlService(Context context) {
     30         this.context = context;
     31     }
     32 
     33     /**
     34      * 使用Android的Pull解析器读取XML文件
     35      * 
     36      * @param fileName要解析的XML文件名
     37      * @return JavaBean的List集合
     38      */
     39     public List<Person> readXml(String fileName) {
     40         // 获得Asset文件
     41         AssetManager manager = context.getAssets();
     42         Person person = null;
     43         List<Person> list = new ArrayList<Person>();
     44         try {
     45             InputStream is = manager.open(fileName);
     46             // =====================================================================
     47             // 使用Android的pull解析器解析XML文档
     48             // 得到pull解析器的实例
     49             XmlPullParser parser = Xml.newPullParser();
     50             // 设置解析器参数
     51             parser.setInput(is, "UTF-8");
     52             // 得到解析器的事件类型
     53             int type = parser.getEventType();
     54             while (type != XmlPullParser.END_DOCUMENT) {
     55                 if (type == XmlPullParser.START_TAG) {
     56                     if ("person".equals(parser.getName())) {
     57                         person = new Person();
     58                         int id = Integer.parseInt(parser.getAttributeValue(0));
     59                         person.setId(id);
     60                     } else if ("name".equals(parser.getName())) {
     61                         String name = parser.nextText();
     62                         person.setName(name);
     63                     } else if ("age".equals(parser.getName())) {
     64                         int age = Integer.parseInt(parser.nextText());
     65                         person.setAge(age);
     66                     }
     67                 }
     68                 if (type == XmlPullParser.END_TAG) {
     69                     if ("person".equals(parser.getName())) {
     70                         list.add(person);
     71                     }
     72                 }
     73                 type = parser.next();
     74             }
     75             return list;
     76         } catch (Exception e) {
     77             e.printStackTrace();
     78             Toast.makeText(context, "文件打开失败", Toast.LENGTH_SHORT).show();
     79         }
     80         return null;
     81     }
     82 
     83     /**
     84      * 使用Android的Pull解析器保存XML文件
     85      * 
     86      * @param persons要保存的List对象
     87      * @return 是否保存成功
     88      */
     89     public boolean writeXml(List<Person> persons) {
     90         try {
     91             // 获得XML序列化器
     92             XmlSerializer serializer = Xml.newSerializer();
     93             File file = new File(Environment.getExternalStorageDirectory(),
     94                     "person.xml");
     95             FileOutputStream fos = new FileOutputStream(file);
     96             serializer.setOutput(fos, "utf-8");
     97             serializer.startDocument("utf-8", true);
     98             serializer.startTag(null, "persons");
     99             for (Person p : persons) {
    100                 serializer.startTag(null, "person");
    101                 serializer.attribute(null, "id", p.getId() + "");
    102 
    103                 serializer.startTag(null, "name");
    104                 serializer.text(p.getName());
    105                 serializer.endTag(null, "name");
    106 
    107                 serializer.startTag(null, "age");
    108                 serializer.text(p.getAge() + "");
    109                 serializer.endTag(null, "age");
    110 
    111                 serializer.endTag(null, "person");
    112             }
    113             serializer.endTag(null, "persons");
    114             serializer.endDocument();
    115             fos.close();
    116             return true;
    117         } catch (Exception e) {
    118             e.printStackTrace();
    119             return false;
    120         }
    121     }
    122 }
  • 相关阅读:
    点击鼠标后系统自动生成对应消息
    mfc 鼠标、键盘响应事件
    VC中键盘键的对应关系
    补充知识及数据类型
    Python入门
    tomcat启动报错
    正则表达式
    MySQL修改root密码的方法
    mysql 压缩包免安装版 安转步骤
    springmvc--json--返回json的日期格式问题
  • 原文地址:https://www.cnblogs.com/FlySheep/p/3450950.html
Copyright © 2011-2022 走看看