1 <?xml version="1.0" encoding="UTF-8"?>
 2 <persons>
 3   <person id="1">
 4     <name>zhangsan</name>
 5     <age>22</age>
 6     <sex>boy</sex>
 7   </person>
 8   <person id="2">
 9     <name>李四</name>
10     <age>20</age>
11     <sex>女</sex>
12   </person>
13 </persons>

解析以上person.xml

PULL解析:基于事件拉取    5个属性:每一个事件对应一个常量        START_DOCUMENT:开始文档 常量值 0        START_TAG:开始标签  2        TEXT:  文本  常量值 4        END_TAG: 结束标签 3        END_DOCUMENT: 结束文档 1    非常重要的方法:        next():检索下一个事件

例1. 创建了Person类。

  1 import java.io.FileInputStream;
  2 import java.io.IOException;
  3 import java.util.ArrayList;
  4 import java.util.List;
  5
  6 import org.xmlpull.v1.XmlPullParser;
  7 import org.xmlpull.v1.XmlPullParserException;
  8 import org.xmlpull.v1.XmlPullParserFactory;
  9
 10 public class Demo3 {
 11
 12     public static void main(String[] args) throws XmlPullParserException,
 13             IOException {
 14         // 1、获取pull解析器的对象工厂
 15         XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
 16         // 2、从工厂对象中获取解析器
 17         XmlPullParser parser = factory.newPullParser();
 18         // 3、设置解析文档
 19         parser.setInput(new FileInputStream("src/person.xml"), "utf-8");
 20         // 4、开始解析
 21         List<Person> list = null;
 22         Person p = null;
 23         // 获取事件类型
 24         int type = parser.getEventType();
 25         while (type != XmlPullParser.END_DOCUMENT) {
 26             String tagName = parser.getName();
 27             switch (type) {
 28             case XmlPullParser.START_TAG:
 29                 if ("persons".equals(tagName)) {
 30                     // 如果开始标记是persons,应该创建集合
 31                     list = new ArrayList<Person>();
 32                 } else if ("person".equals(tagName)) {
 33                     // 如果开始标记是person,应该创建person对象
 34                     p = new Person();
 35                     if (parser.getAttributeCount() > 0) {
 36                         // 获取属性id的值,赋值给person对象的id属性
 37                         p.setId(parser.getAttributeValue(0));// 第一个属性
 38                     }
 39                 } else if ("name".equals(tagName)) {
 40                     p.setName(parser.nextText());
 41                 } else if ("age".equals(tagName)) {
 42                     p.setAge(Integer.parseInt(parser.nextText()));
 43                 } else if ("sex".equals(tagName)) {
 44                     p.setSex(parser.nextText());
 45                 }
 46                 break;
 47             case XmlPullParser.END_TAG:
 48                 if ("person".equals(tagName)) {
 49                     // </person> 将Person放入list集合
 50                     list.add(p);
 51                 }
 52                 break;
 53             }
 54             // 很重要的步骤:获取下次事件类型
 55             type = parser.next();
 56         }
 57         // 打印list
 58         for (Person per : list) {
 59             System.out.println(per);
 60         }
 61     }
 62
 63     static class Person {
 64         private String id;
 65         private String name;
 66         private int age;
 67         private String sex;
 68
 69         public Person() {
 70             super();
 71         }
 72
 73         public Person(String id, String name, int age, String sex) {
 74             super();
 75             this.id = id;
 76             this.name = name;
 77             this.age = age;
 78             this.sex = sex;
 79         }
 80
 81         public String getId() {
 82             return id;
 83         }
 84
 85         public void setId(String str) {
 86             this.id = str;
 87         }
 88
 89         public String getName() {
 90             return name;
 91         }
 92
 93         public void setName(String name) {
 94             this.name = name;
 95         }
 96
 97         public int getAge() {
 98             return age;
 99         }
100
101         public void setAge(int age) {
102             this.age = age;
103         }
104
105         public String getSex() {
106             return sex;
107         }
108
109         public void setSex(String sex) {
110             this.sex = sex;
111         }
112
113         @Override
114         public String toString() {
115             return "Person [id=" + id + ", name=" + name + ", age=" + age
116                     + ", sex=" + sex + "]";
117         }
118
119     }
120 }

 

转载于:https://www.cnblogs.com/touchmore/p/4992960.html

Xml解析之PULL解析 例1相关推荐

  1. XML解析:PULL解析

    为什么80%的码农都做不了架构师?>>> 概述: PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用 ...

  2. Android[中级教程]第五章 XML解析之PULL解析器

    这一章我们来学习Android中的XML解析器,Android中自带了三个XML解析器,有PULL,SAX,DOM解析器,其中PULL跟SAX都是以事件作为驱动导向的解析器,优点是占用内存小,处理速度 ...

  3. 用PULL解析器解析XML文件

    第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...

  4. Android之Pull解析XML

    一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...

  5. xml解析:Sax,Dom,pull解析

    Sax 1.startDocument()文档开始 2.endDocument()文档结束 3.startElement(String namespaceURI,String localName,St ...

  6. Android学习笔记---15_采用Pull解析器解析和生成XML内容

    15_采用Pull解析器解析和生成XML内容 -------------------------------------- 使用SAX或者DOM或者pull解析XML文件 -------------- ...

  7. Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)

    Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器. SAX的包是org.xml.sax DOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的 ...

  8. Android——网络交互,如何调用接口并且json解析json格式和pull解析xml格式

    本菜鸟因为之前一直使用的是公司前辈封装好的类(网络接口调用超级方便有木有)完全没有想过有一天我会自己写,然后今天接触的时候一脸懵逼,然后今天花了一天时间终于研究好了:哈哈哈哈哈 二话不说先上代码: p ...

  9. Android[中级教程]第六章 XML解析之SAX解析器

    Android[中级教程]第六章 XML解析之SAX解析器 分类: Android中级2011-10-06 01:52 125人阅读 评论(1) 收藏 举报 接上一章,这一章我们就来学习SAX解析器, ...

最新文章

  1. 用Swift实现一款天气预报APP(三)
  2. weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB 解决方法
  3. Java执行main方法,异常为:could not find the main class.program will exit
  4. 北京交通大学研究生教务处爬虫
  5. pyqt5 实现右键自定义_《快速掌握PyQt5》第十七章 事件处理
  6. Linux PXE批量网络装机与Kickstart 无人值守安装
  7. linux 高级IO函数之fcntl mmap/munmap
  8. mysql安装方法_MySQL安装的三种方式
  9. How to learn Lua
  10. 阿里云张献涛:2021 弹性计算发生了哪些变化
  11. php算数组内值的总和,怎样使用array_sum() 计算数组元素值总和
  12. arcgis制作空间变化图怎么做_教程:如何使用ArcGIS10.2制作气温空间分布图
  13. Oracle执行计划Explain Plan 如何使用
  14. tensorflow目标检测API实现血细胞图像识别和计数
  15. 惊!Adam效果不好居然是因为……,Decouple Weight Decay Regulaization阅读笔记
  16. SOFA企业应用框架
  17. html复制并弹窗提示已复制,如何调用handsome主题自带的弹窗提示实现复制弹窗提醒以及个性化提示...
  18. AD831混频器模块
  19. 基于Token的身份验证的原理
  20. 内部存储空间不足_手机提示存储空间不足的原因和解决方法

热门文章

  1. httpsrequest java_java 发送http和https请求的实例
  2. bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序
  3. Php中如何记录本报时间,详细讲解PHP的日期时间函数date()
  4. 电脑qq收藏在哪里_电脑突然死机了怎么办?几种常见电脑故障及其解决方法
  5. C++中getline()与cin.getline()详解
  6. 对指针变量取地址_C语言指针简介(amp;和*运算符)
  7. keil git 编译文件_keil下的STM32程序开发部署(一)
  8. lt li gt html,lt;ligt;...这个符号什么意思,放在中间有什么作用?
  9. 3月31日华为鸿蒙,华为鸿蒙OS Beta 3将从3月31日起推送
  10. js获取当前日期_vue项目中获取前后N天日期