<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="1001">
<name>红楼梦</name>
<author>曹雪芹</author>
<price>345.6</price>
</book>
<book id="1002">
<name>西游记</name>
<author>吴承恩</author>
<price>102.8</price>
</book>
<book id="1003">
<name>三国演义</name>
<author>罗贯中</author>
<price>200.6</price>
</book>
<book id="1004">
<name>水浒传</name>
<author>施耐庵</author>
<price>108.6</price>
</book>
</books> 例2.
1、用了Map<String, Object> book表示一个book对象
2、用了List<Map<String,Object>> list存放一组book对象
 
 package com.qf.pull;

 import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory; public class Demo4_book { public static void main(String[] args) throws XmlPullParserException,
IOException {
// TODO Auto-generated method stub
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
XmlPullParser parser = factory.newPullParser();
parser.setInput(new FileInputStream("src/book.xml"), "utf-8");
int type = parser.getEventType();
Map<String, Object> book = null;
List<Map<String, Object>> list = null;
while (type != XmlPullParser.END_DOCUMENT) {
String tagName = parser.getName();
switch (type) {
//不同于例1,也可以在文档开始的时候,实例化list对象,用于存放XML解析后的数据
case XmlPullParser.START_DOCUMENT:
list = new ArrayList<Map<String, Object>>();
// System.out.println(tagName);//null
break;
case XmlPullParser.START_TAG:
// System.out.println(tagName);
if ("book".equals(tagName)) {
book = new HashMap<String, Object>();
int count = parser.getAttributeCount();//假设有多个属性值
for (int i = 0; i < count; i++) {
String name = parser.getAttributeName(i);//比如"id"
String value = parser.getAttributeValue(i);//比如"1004"
book.put(name, value);
}
} else if ("name".equals(tagName)) {
book.put("name", parser.nextText());
} else if ("author".equals(tagName)) {
book.put("author", parser.nextText());
} else if ("price".equals(tagName)) {
book.put("price", Double.parseDouble(parser.nextText()));
}
break;
case XmlPullParser.END_TAG:
if ("book".equals(tagName)) {
list.add(book);
}
break;
} type = parser.next();
}// end while
for (Map<String, Object> map : list) {
System.out.println(map);
}
}
}


Xml解析之PULL解析 例2的更多相关文章

  1. Xml解析之PULL解析 例1

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

  2. 非常简单的XML解析(SAX解析、pull解析)

    这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...

  3. XMl解析之Pull解析

    HttpUtils: package cn.qf.parser; import java.io.BufferedOutputStream; import java.io.FileOutputStrea ...

  4. XML 序列化与PULL解析

    简介 Pull解析XML XmlPullParser解析器的运行方式与SAX解析器相似.它提供了类似的事件(开始元素和结束元素),但需要使用parser.next()方法来提取它们.事件将作为数值代码 ...

  5. Android之Pull解析XML

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

  6. Android pull解析xml文件

    本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...

  7. 安卓使用pull解析器解析XML文件

    学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...

  8. XML解析之PULL

    在Android中极力推荐的xmlpull方式解析xml. 为什么 STAX 解析方式 效率 好于 SAX ? 1.SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型 ...

  9. pull解析xml文件

    pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...

随机推荐

  1. sql server 批量导出存储过程

    sys.syscomments:包含数据库中每个视图.规则.默认值.触发器.CHECK 约束.DEFAULT 约束和存储过程的项.text 列包含原始的 SQL 定义语句.(简单点说,这个系统表存储了 ...

  2. python获取系统时间代码解析

    import time     print time.time()    输出的结果是:    1279578704.6725271 但是这样是一连串的数字不是我们想要的结果,我们可以利用time模块 ...

  3. VS选项中没有C#相关设置选项?

    在VS中,行号的设置在工具-选项-文本编辑器,可里面没有VS,我还以为是之前卸载了SP1后造成的. 原来是因为,VS默认环境设置的VB,选项对话框左下角有"显示所有设置"的复选框, ...

  4. Cocos2d-x 处理双击事件的两种方法

    在cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现. 下面介绍两种方式实现双击事件的处理. (一 ...

  5. ReSharper的功能真的很强大主要是针对代码规范和优化,园子里介绍的也不少,如果你没有安装,那我只能表示你们会相见恨晚

    二.ReSHarper 代码规范.单元测试.... ReSharper的功能真的很强大,主要是针对代码规范和优化,园子里介绍的也不少,如果你没有安装,那我只能表示你们会相见恨晚! 1.像命名不规范,f ...

  6. 查找文件工具find

    与locate.whereis命令相比,find具有本质的区别: 首先,find是从指定的位置进行遍历查找(可以理解为对文件和目录进行逐一查找). 其次,find可以查找具有某一类特征的文件(例如查找 ...

  7. hadoop,hbase,hive安装全记录(转)

    http://wenku.baidu.com/view/5eb3b4a6f90f76c661371abe.html 或http://blog.csdn.net/chengweipeng123/arti ...

  8. 手动脱UPX 壳实战

    作者:Fly2015 Windows平台的加壳软件还是比較多的,因此有非常多人对于PC软件的脱壳乐此不彼,本人菜鸟一枚,也学习一下PC的脱壳.要对软件进行脱壳.首先第一步就是 查壳.然后才是 脱壳. ...

  9. [Exception JavaWeb 1] - Cause: com.microsoft.sqlserver.jdbc.SQLServerException: '@P2' 附近有语法错误。

    严重: Servlet.service() for servlet [springMVC] in context with path [/ExceptionManageSystem] threw ex ...

  10. 〖Linux〗不知谁写的,很实用的Linux命令

    第一部分 . sudo 运行上一条命令 sudo !! . HTTP方式共享当前目录 python -m SimpleHTTPServer . vim保存一个root用户文件 :w !sudo tee ...