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相关推荐

  1. Xml解析之PULL解析 例1

    1 <?xml version="1.0" encoding="UTF-8"?> 2 <persons> 3 <person id ...

  2. XML解析:PULL解析

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

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

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

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

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

  5. Android之Pull解析XML

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. 一个经典例子让你彻彻底底理解java回调机制
  2. 使用OpenVas漏扫
  3. ntu 课程笔记 :MAS714(7) 最短路径和优先队列
  4. R12.2 新功能:值集安全性设置及效果 Flexfield Value Set Security
  5. linux查看发ftp的ip地址,linux常用命令及学习小结(4)--IP设置、samba、ftp
  6. layui 给table里面的添加图标_layui中的table中toolbar自定义过程
  7. Sping5——响应式编程
  8. 教师计算机提升学到的知识,教师计算机教学工作总结(精选6篇)
  9. 安卓随机通话记录_几款安卓amp;苹果虚拟来电软件,带你快速逃离尬聊现场,留有情面慰人心扉...
  10. Android通过命令连接wifi(解决usb不能用+无屏幕情况)
  11. 免费提供离线地图部署服务
  12. 新版阿里云服务器的安全组配置
  13. ajax下载Excel文件
  14. python程序实现分析_Python编程快速上手——疯狂填词程序实现方法分析
  15. 服务器系统盘是否需要阵列,服务器硬盘必须设置阵列吗
  16. 网络号,IP,子网掩码之间的关系
  17. 【洛谷】P5149 会议座位
  18. 海天蚝油《挑战不可能》7岁神童”盲棋“对抗,展现惊人脑力
  19. Openresty宏观概述笔记
  20. 差分曼彻斯特第一位判断方法

热门文章

  1. 使用yo -v查看yeoman版本号
  2. ansible 小试身手
  3. Hibernate @Any 及 @ManyToAny 使用教程
  4. Away3D 的实体收集器流程2
  5. LINUX开源监控平台Nagios(服务监控配置)
  6. python数学建模可视化,[Python与数学建模-数据处理与可视化]-3数据处理工具Pandas...
  7. Nginx源码分析 - 基础数据结构篇 - 字符串结构 ngx_string.c(08)
  8. go - range
  9. 设计模式---访问者模式(C++实现)
  10. redis强一致性_Redis的8连击,验证你是否熟练掌握Redis核心知识点。