Xml解析之PULL解析 例1
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相关推荐
- XML解析:PULL解析
为什么80%的码农都做不了架构师?>>> 概述: PULL解析器小巧轻便,解析速度快,简单易用,非常适合在Android移动设备中使用,Android系统内部在解析各种XML时也是用 ...
- Android[中级教程]第五章 XML解析之PULL解析器
这一章我们来学习Android中的XML解析器,Android中自带了三个XML解析器,有PULL,SAX,DOM解析器,其中PULL跟SAX都是以事件作为驱动导向的解析器,优点是占用内存小,处理速度 ...
- 用PULL解析器解析XML文件
第一种方式(简洁,直接用pullparser.nextText()来返回下一个String类型的值): 1 package lee.service; 2 3 import java.io.InputS ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- xml解析:Sax,Dom,pull解析
Sax 1.startDocument()文档开始 2.endDocument()文档结束 3.startElement(String namespaceURI,String localName,St ...
- Android学习笔记---15_采用Pull解析器解析和生成XML内容
15_采用Pull解析器解析和生成XML内容 -------------------------------------- 使用SAX或者DOM或者pull解析XML文件 -------------- ...
- Java解析xml的主要解析器: SAX和DOM的选择(附上新方法--Pull解析)
Java的xml解析器库有很多,总的来说,万变不离其宗的就是SAX和DOM解析器. SAX的包是org.xml.sax DOM的包是org.w3c.dom 1) DOM DOM 是用与平台和语言无关的 ...
- Android——网络交互,如何调用接口并且json解析json格式和pull解析xml格式
本菜鸟因为之前一直使用的是公司前辈封装好的类(网络接口调用超级方便有木有)完全没有想过有一天我会自己写,然后今天接触的时候一脸懵逼,然后今天花了一天时间终于研究好了:哈哈哈哈哈 二话不说先上代码: p ...
- Android[中级教程]第六章 XML解析之SAX解析器
Android[中级教程]第六章 XML解析之SAX解析器 分类: Android中级2011-10-06 01:52 125人阅读 评论(1) 收藏 举报 接上一章,这一章我们就来学习SAX解析器, ...
最新文章
- 用Swift实现一款天气预报APP(三)
- weblogic.jdbc.wrapper.Blob_oracle_sql_BLOB cannot be cast to oracle.sql.BLOB 解决方法
- Java执行main方法,异常为:could not find the main class.program will exit
- 北京交通大学研究生教务处爬虫
- pyqt5 实现右键自定义_《快速掌握PyQt5》第十七章 事件处理
- Linux PXE批量网络装机与Kickstart 无人值守安装
- linux 高级IO函数之fcntl mmap/munmap
- mysql安装方法_MySQL安装的三种方式
- How to learn Lua
- 阿里云张献涛:2021 弹性计算发生了哪些变化
- php算数组内值的总和,怎样使用array_sum() 计算数组元素值总和
- arcgis制作空间变化图怎么做_教程:如何使用ArcGIS10.2制作气温空间分布图
- Oracle执行计划Explain Plan 如何使用
- tensorflow目标检测API实现血细胞图像识别和计数
- 惊!Adam效果不好居然是因为……,Decouple Weight Decay Regulaization阅读笔记
- SOFA企业应用框架
- html复制并弹窗提示已复制,如何调用handsome主题自带的弹窗提示实现复制弹窗提醒以及个性化提示...
- AD831混频器模块
- 基于Token的身份验证的原理
- 内部存储空间不足_手机提示存储空间不足的原因和解决方法
热门文章
- httpsrequest java_java 发送http和https请求的实例
- bat 删除文件_利用电脑文本文档建立一个简单方便的删除文件的小程序
- Php中如何记录本报时间,详细讲解PHP的日期时间函数date()
- 电脑qq收藏在哪里_电脑突然死机了怎么办?几种常见电脑故障及其解决方法
- C++中getline()与cin.getline()详解
- 对指针变量取地址_C语言指针简介(amp;和*运算符)
- keil git 编译文件_keil下的STM32程序开发部署(一)
- lt li gt html,lt;ligt;...这个符号什么意思,放在中间有什么作用?
- 3月31日华为鸿蒙,华为鸿蒙OS Beta 3将从3月31日起推送
- js获取当前日期_vue项目中获取前后N天日期