java中采用Pull解析器对XML文件进行解析

简介:

一、基本介绍
Android中极力推荐xmlpull方式解析xml。
xmlpull不仅可用在Android上同样也适用于javase,但在javase环境中需自己获取xmlpull所依赖的类库,kxml2-2.3.0.jar,xmlpull_1_1_3_4c.jar。

jar包下载网址
http://www.xmlpull.org/
http://kxml.sourceforge.net/

 

二、例子

读取到xml的声明返回数字0 START_DOCUMENT;
读取到xml的结束返回数字1 END_DOCUMENT ;
读取到xml的开始标签返回数字2 START_TAG
读取到xml的结束标签返回数字3 END_TAG
读取到xml的文本返回数字4 TEXT

 
  1. <?xml version="1.0" encoding="UTF-8"?> 
  2. <people> 
  3.  <person id="001"> 
  4.   <name>XY1</name> 
  5.   <age>22</age> 
  6.  </person> 
  7.  <person id="002"> 
  8.   <name>XY2</name> 
  9.   <age>22</age> 
  10.  </person> 
  11. </people> 

 

 
  1. public class PersonService  
  2. {  
  3.    
  4.  public List getPeople(InputStream xml) throws Exception  
  5.  {  
  6.   List lst = null;  
  7.   Person person = null;  
  8.  
  9.   // 获得pull解析器工厂  
  10.   XmlPullParserFactory pullParserFactory = XmlPullParserFactory.newInstance();  
  11.     
  12.   //获取XmlPullParser的实例  
  13.   XmlPullParser pullParser = pullParserFactory.newPullParser();  
  14.  
  15.  
  16.  // 设置需要解析的XML数据  
  17.   pullParser.setInput(xml, "UTF-8");  
  18.  
  19.   // 取得事件  
  20.   int event = pullParser.getEventType();  
  21.  
  22.   // 若为解析到末尾  
  23.   while (event != XmlPullParser.END_DOCUMENT) // 文档结束  
  24.   {  
  25.    // 节点名称  
  26.    String nodeName = pullParser.getName();  
  27.    switch (event)  
  28.    {  
  29.     case XmlPullParser.START_DOCUMENT: // 文档开始  
  30.      lst = new ArrayList();  
  31.      break;  
  32.     case XmlPullParser.START_TAG: // 标签开始  
  33.      if ("person".equals(nodeName))  
  34.      {  
  35.       String id = pullParser.getAttributeValue(0);  
  36.       person = new Person();  
  37.       person.setId(id);  
  38.      }  
  39.      if ("name".equals(nodeName))  
  40.      {  
  41.       String name = pullParser.nextText();  
  42.       person.setName(name);  
  43.      }  
  44.      if ("age".equals(nodeName))  
  45.      {  
  46.       int age = Integer.valueOf(pullParser.nextText());  
  47.       person.setAge(age);  
  48.      }  
  49.      break;  
  50.     case XmlPullParser.END_TAG: // 标签结束  
  51.      if ("person".equals(nodeName))  
  52.      {  
  53.       lst.add(person);  
  54.       person = null;  
  55.      }  
  56.      break;  
  57.    }  
  58.    event = pullParser.next(); // 下一个标签  
  59.   }  
  60.   return lst;  
  61.  }  
  62. }  
本文转自 IT徐胖子的专栏博客51CTO博客,原文链接http://blog.51cto.com/woshixy/1077908如需转载请自行联系原作者

woshixuye111
相关文章
|
15天前
|
Java
Java中ReentrantLock释放锁代码解析
Java中ReentrantLock释放锁代码解析
25 8
|
17天前
|
XML JavaScript 前端开发
xml文件使用及解析
xml文件使用及解析
|
30天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
1月前
|
安全 Java 数据库连接
jdbc解析excel文件,批量插入数据至库中
jdbc解析excel文件,批量插入数据至库中
21 0
|
1天前
|
Java
Java输入输出流详细解析
Java输入输出流详细解析
Java输入输出流详细解析
|
1天前
|
存储 Java C++
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
Java集合篇之深度解析Queue,单端队列、双端队列、优先级队列、阻塞队列
10 0
|
6天前
|
XML C# 数据格式
C# 解析XML文件
C# 解析XML文件
15 1
|
8天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
13天前
|
Java
Java 15 神秘登场:隐藏类解析未知领域
Java 15 神秘登场:隐藏类解析未知领域
17 0
|
13天前
|
安全 Java 编译器
接口之美,内部之妙:深入解析Java的接口与内部类
接口之美,内部之妙:深入解析Java的接口与内部类
35 0
接口之美,内部之妙:深入解析Java的接口与内部类

推荐镜像

更多