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

时间:2022-07-27
本文章向大家介绍Android编程使用pull方式解析xml格式文件的方法详解,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

本文实例讲述了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应该比较简单了,单元测试也用昨天那个只是少做了修改。下面看一下效果截图

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

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

在线格式化XML/在线压缩XML: http://tools.zalou.cn/code/xmlformat

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

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

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