首先将 文件导入SD卡

文件如下:

<?  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>

接下来是整个解析方法了

// 解析 -->PullParger
 private ArrayList< Bean> getSD () {
  /*
   * 清单文件配置读写权限 
   * <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. \");

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

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


收藏 打印