Xml解析之PULL解析 例2
1 <?xml version="1.0" encoding="UTF-8"?> 2 <books> 3 <book id="1001"> 4 <name>红楼梦</name> 5 <author>曹雪芹</author> 6 <price>345.6</price> 7 </book> 8 <book id="1002"> 9 <name>西游记</name> 10 <author>吴承恩</author> 11 <price>102.8</price> 12 </book> 13 <book id="1003"> 14 <name>三国演义</name> 15 <author>罗贯中</author> 16 <price>200.6</price> 17 </book> 18 <book id="1004"> 19 <name>水浒传</name> 20 <author>施耐庵</author> 21 <price>108.6</price> 22 </book> 23 </books> 例2.1、用了Map<String, Object> book表示一个book对象2、用了List<Map<String,Object>> list存放一组book对象
1 package com.qf.pull; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.HashMap; 7 import java.util.List; 8 import java.util.Map; 9 10 import org.xmlpull.v1.XmlPullParser; 11 import org.xmlpull.v1.XmlPullParserException; 12 import org.xmlpull.v1.XmlPullParserFactory; 13 14 public class Demo4_book { 15 16 public static void main(String[] args) throws XmlPullParserException, 17 IOException { 18 // TODO Auto-generated method stub 19 XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); 20 XmlPullParser parser = factory.newPullParser(); 21 parser.setInput(new FileInputStream("src/book.xml"), "utf-8"); 22 int type = parser.getEventType(); 23 Map<String, Object> book = null; 24 List<Map<String, Object>> list = null; 25 while (type != XmlPullParser.END_DOCUMENT) { 26 String tagName = parser.getName(); 27 switch (type) { 28 //不同于例1,也可以在文档开始的时候,实例化list对象,用于存放XML解析后的数据 29 case XmlPullParser.START_DOCUMENT: 30 list = new ArrayList<Map<String, Object>>(); 31 // System.out.println(tagName);//null 32 break; 33 case XmlPullParser.START_TAG: 34 // System.out.println(tagName); 35 if ("book".equals(tagName)) { 36 book = new HashMap<String, Object>(); 37 int count = parser.getAttributeCount();//假设有多个属性值 38 for (int i = 0; i < count; i++) { 39 String name = parser.getAttributeName(i);//比如"id" 40 String value = parser.getAttributeValue(i);//比如"1004" 41 book.put(name, value); 42 } 43 } else if ("name".equals(tagName)) { 44 book.put("name", parser.nextText()); 45 } else if ("author".equals(tagName)) { 46 book.put("author", parser.nextText()); 47 } else if ("price".equals(tagName)) { 48 book.put("price", Double.parseDouble(parser.nextText())); 49 } 50 break; 51 case XmlPullParser.END_TAG: 52 if ("book".equals(tagName)) { 53 list.add(book); 54 } 55 break; 56 } 57 58 type = parser.next(); 59 }// end while 60 for (Map<String, Object> map : list) { 61 System.out.println(map); 62 } 63 } 64 }
转载于:https://www.cnblogs.com/touchmore/p/4992981.html
Xml解析之PULL解析 例2相关推荐
- Xml解析之PULL解析 例1
1 <?xml version="1.0" encoding="UTF-8"?> 2 <persons> 3 <person id ...
- 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解析器, ...
最新文章
- 一个经典例子让你彻彻底底理解java回调机制
- 使用OpenVas漏扫
- ntu 课程笔记 :MAS714(7) 最短路径和优先队列
- R12.2 新功能:值集安全性设置及效果 Flexfield Value Set Security
- linux查看发ftp的ip地址,linux常用命令及学习小结(4)--IP设置、samba、ftp
- layui 给table里面的添加图标_layui中的table中toolbar自定义过程
- Sping5——响应式编程
- 教师计算机提升学到的知识,教师计算机教学工作总结(精选6篇)
- 安卓随机通话记录_几款安卓amp;苹果虚拟来电软件,带你快速逃离尬聊现场,留有情面慰人心扉...
- Android通过命令连接wifi(解决usb不能用+无屏幕情况)
- 免费提供离线地图部署服务
- 新版阿里云服务器的安全组配置
- ajax下载Excel文件
- python程序实现分析_Python编程快速上手——疯狂填词程序实现方法分析
- 服务器系统盘是否需要阵列,服务器硬盘必须设置阵列吗
- 网络号,IP,子网掩码之间的关系
- 【洛谷】P5149 会议座位
- 海天蚝油《挑战不可能》7岁神童”盲棋“对抗,展现惊人脑力
- Openresty宏观概述笔记
- 差分曼彻斯特第一位判断方法
热门文章
- 使用yo -v查看yeoman版本号
- ansible 小试身手
- Hibernate @Any 及 @ManyToAny 使用教程
- Away3D 的实体收集器流程2
- LINUX开源监控平台Nagios(服务监控配置)
- python数学建模可视化,[Python与数学建模-数据处理与可视化]-3数据处理工具Pandas...
- Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
- go - range
- 设计模式---访问者模式(C++实现)
- redis强一致性_Redis的8连击,验证你是否熟练掌握Redis核心知识点。