<?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. Node.js:创建应用+回调函数(阻塞/非阻塞)+事件循环

    一.创建应用 如果我们使用PHP来编写后端的代码时,需要Apache 或者 Nginx 的HTTP 服务器,并配上 mod_php5 模块和php-cgi.从这个角度看,整个"接收 HTTP ...

  2. MS SQL 中判断 数据库, 存储过程,表,临时表,视图,函数,用户,用户创建对象 等是否存在 SQL脚本

    摘自: http://www.111cn.net/database/mssqlserver/39107.htm sql判断存储过程是否存在 判断数据库教程是否存在 Sql代码 if exists (s ...

  3. Android -- Messenger与Service

    如果你需要你的service和其他进程通信,那么你可以使用一个Messenger来提供这个接口. 这种方法允许你在不使用 AIDL的情况下,进行跨进程通信IPC. 实现步骤 下面是一个如何使用 Mes ...

  4. C# 中如何将List<string>里的集合转换成字符串并按指定的字符进行分隔?

    代码: using System; using System.Collections.Generic; publicclassMyClass { publicstaticvoidMain() { Li ...

  5. Android内存泄漏分析实战

    内存泄漏简单介绍 java能够保证当没有引用指向对象的时候,对象会被垃圾回收器回收.与c语言自己申请的内存自己释放相比,java程序猿轻松了非常多.可是并不代表java程序猿不用操心内存泄漏.当jav ...

  6. ant design 中的 Select 组件常规写法

    1.代码 import { Select, Spin } from 'antd'; const Option = Select.Option; <Select allowClear showSe ...

  7. php 缓冲区总结

    我们先来看一段代码. <?php for ($i=10; $i>0; $i--) { echo $i; flush(); sleep(1); } ?> 按照php手册里的说法 该函数 ...

  8. 使用create-react-app模板模仿12306app

    概述 使用create-react-app模板模仿12306app,实现了登陆和查票购票管理,结合express+mysql做后台,实现数据存储. github地址:https://github.co ...

  9. 【LeetCode】114. Flatten Binary Tree to Linked List

    Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-place. For ex ...

  10. Windows2008 R2下,应用程序池 'XXXXXXXX' 被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。

    转:http://www.cnblogs.com/freeton/archive/2012/08/28/2660585.html http://www.hack001.com/post/151