Xml解析解析xmlpullparser方法-详细介绍

首先将xml文件导入SD卡

xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<persons>
          <person id="01">
            <name>小公公</name>
           <age>21</age>
            <sex>不详</sex>
          </person>
          <person id="02">
           <name>翠花</name>
            <age>21</age>
            <sex>女</sex>
          </person>
</persons>

接下来是整个解析方法了

// 解析Xml-->PullParger
 private ArrayList<XmlBean> getSDXml() {
  /*
   * 清单文件配置读写权限 
   * <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   * <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
   */
  // 是否挂载
  if (!Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
   return null;
  }
  // 文件路径
  File file = new File(Environment.getExternalStorageDirectory(),
    "exit.xml");

  try {
   // 读取文件-->以流的方式
   FileInputStream stream = new FileInputStream(file);
   // 获取文件解析类
   XmlPullParser parser = Xml.newPullParser();
   // 设置解析类的数据和编码格式
   parser.setInput(stream, "utf-8");
   // 根据事件获取节点
   int type = parser.getEventType();
   // ====
   ArrayList<XmlBean> list = null;
   XmlBean xmlBean = null;
   // 判断文档是否读取完毕
   while (type != XmlPullParser.END_DOCUMENT) {
    switch (type) {
    case XmlPullParser.START_DOCUMENT:
     // 文档开始--创建集合
     list = new ArrayList<XmlBean>();
     break;
    case XmlPullParser.START_TAG:// 标签开始
     if (parser.getName().equals("person")) {
      // 创建bean
      xmlBean = new XmlBean();
      // 属性节点根据索引获取
      String id = parser.getAttributeValue(0);
      xmlBean.setId(id);
     }
     if (parser.getName().equals("name")) {
      String name = parser.nextText();
      xmlBean.setName(name);
     }
     if (parser.getName().equals("age")) {
      String age = parser.nextText();
      xmlBean.setAge(age);
     }
     if (parser.getName().equals("sex")) {
      String sex = parser.nextText();
      xmlBean.setSex(sex);
     }
     break;
    case XmlPullParser.END_TAG:// 标签结束
     if (parser.getName().equals("person")) {
      // bean类存进集合
      list.add(xmlBean);
     }
     break;
    }
    // 获取下个标签内数据
    type = parser.next();
   }
   return list;
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  return null;
 }
`

> 如果感觉有所帮助,多多评论互动,以后常更新。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值