Android编程使用pull方式解析xml格式文件的方法详解

作者:青蛙小王子 时间:2022-08-26 14:18:35 

本文实例讲述了Android编程使用pull方式解析xml格式文件的方法。分享给大家供大家参考,具体如下:

上次已经说过使用Android sax解析xml,实际上还可以使用pull解析xml.这样的方式效率也是比较高的。pull不仅可以在Android上使用也可以用在javaee里面,需要的就是pull的jar包。这次的xml也使用上次的那个,如下所示


<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="01">
  <name>will</name>
  <age>21</age>
</person>
<person id="02">
  <name>will2</name>
  <age>22</age>
</person>
</persons>

下面就来写一个解析xml的类,解析的流程如下

(1)取得pull解析器
(2)设置解析器的输入流
(3)产生第一个事件
(4)开始解析
(5)解析结束


package org.lxh.impl;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.lxh.vo.Person;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.util.Log;
import android.util.Xml;
public class Parse2 {
public List<Person> getPersons(InputStream in) throws Throwable{
  Person p=null;
  List<Person> persons=null;
  XmlPullParser parser=Xml.newPullParser();
  parser.setInput(in, "UTF-8");
  int event=parser.getEventType();//产生第一个事件
  while(event!=XmlPullParser.END_DOCUMENT){ //如果不是文档结束事件
    switch(event){
     case XmlPullParser.START_DOCUMENT:
       persons=new ArrayList<Person>(); //在文档的开始实例化集合
       break;
     case XmlPullParser.START_TAG:
       String name=parser.getName();//取得当前解析器指向的元素名称
       if("person".equals(name)){
         p=new Person();
         p.setId(parser.getAttributeValue(0));
       }
       if(p!=null){
         if("name".equals(name)){
           p.setName(parser.nextText()); //取得当前解析器指向的下一个元素的文本节点
         }
         if("age".equals(name)){
           p.setAge(Integer.parseInt(parser.nextText()));
         }
       }
       break;
     case XmlPullParser.END_TAG:
       if("person".equals(parser.getName())){ //person标签结束就把数据存入集合
         persons.add(p);
         //p=null;
       }
       break;
    }
    event=parser.next();
  }
  return persons;
}
}

这样的解析比起sax应该比较简单了,单元测试也用昨天那个只是少做了修改。下面看一下效果截图

Android编程使用pull方式解析xml格式文件的方法详解

PS:这里再为大家提供几款关于xml操作的在线工具供大家参考使用:

在线XML/JSON互相转换工具:
http://tools.jb51.net/code/xmljson

在线格式化XML/在线压缩XML:
http://tools.jb51.net/code/xmlformat

XML在线压缩/格式化工具:
http://tools.jb51.net/code/xml_format_compress

XML代码在线格式化美化工具:
http://tools.jb51.net/code/xmlcodeformat

希望本文所述对大家Android程序设计有所帮助。

标签:Android,pull,xml
0
投稿

猜你喜欢

  • Spring之spring-context-indexer依赖详解

    2023-11-23 12:21:41
  • 微信小程序微信登录的实现方法详解(JAVA后台)

    2023-08-29 12:37:25
  • Android下拉列表选项框及指示箭头动画

    2022-09-28 04:08:15
  • 用java WebSocket做一个聊天室

    2021-11-30 00:39:55
  • Java的MyBatis框架中实现多表连接查询和查询结果分页

    2022-10-29 08:49:21
  • JVM Client和Server端有什么区别

    2023-08-05 22:49:53
  • Spring实战之使用注解实现声明式事务操作示例

    2021-08-19 07:16:07
  • Android控件之ListView用法实例详解

    2023-09-11 00:39:26
  • IDEA启动tomcat控制台中文乱码问题的解决方法(100%有效)

    2021-06-25 10:45:23
  • Android开发中MotionEvent坐标获取方法分析

    2022-03-29 02:43:42
  • JavaWeb实现文件上传与下载的方法

    2023-12-23 04:42:56
  • C#的TimeSpan案例详解

    2023-11-20 11:34:52
  • Java实现FTP上传到服务器

    2022-10-07 10:28:58
  • JAVA实现账户取款和存款操作

    2023-08-22 16:31:45
  • spring cloud zuul修改请求url的方法

    2022-09-03 01:44:19
  • Ireport的安装与使用教程

    2021-08-08 00:16:43
  • SpringBoot 如何使用RestTemplate发送Post请求

    2022-03-03 09:35:47
  • C# 异步多线程入门基础

    2022-01-19 05:23:05
  • Java基于递归和循环两种方式实现未知维度集合的笛卡尔积算法示例

    2021-07-19 04:41:18
  • Mybatis结果生成键值对的实例代码

    2023-11-28 15:50:58
  • asp之家 软件编程 m.aspxhome.com