软件编程
位置:首页>> 软件编程>> Android编程>> Android编程使用pull方式解析xml格式文件的方法详解

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

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

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

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程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com