<?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. hybrid app开发中用到的html5新特性localStorage、sessionStorage和websql database

    近期在项目中进行hybrid app开发,项目中有大量的js代码执行在android设备上. 使用到了非常多HTML5的新特性,之前没有遇到过,不了解.这里记录下添加点前端的知识.混合式app开发中. ...

  2. php 上传视频的代码,

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...

  3. 【转】TCP分段与IP分片

    原文: :https://www.jianshu.com/p/f9a5b07d99a2 -------------------------------------------------------- ...

  4. spring mvc--默认都使用了哪些bean

    在MVC中默认使用的bean都定义在了 org.springframework.web.servlet下的DispatcherServlet.properties 下载源文件后可查看到默认bean定义 ...

  5. Simple TCP/IP Echo Server & Client Application in C#

    1. TCP Server The server’s job is to set up an endpoint for clients to connect to and passively wait ...

  6. UDP socket也可以使用connect系统调用

    UDP socket也可以使用connect系统调用 UDP是一个无连接的协议,因此socket函数connect()似乎对UDP是没有意义的,然而事实不是这样.它可以用来指定本地端口和本地地址,来建 ...

  7. hdu 4287Intelligent IME(简单hash)

    Intelligent IME Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  8. CSV 读写

    using System; using System.IO; using System.Runtime.InteropServices; using UnityEngine; public class ...

  9. DB中耗时的 存储过程 及执行详细情况

    SELECT a.object_id, a.database_id, OBJECT_NAME(object_id, database_id) 'proc name', a.cached_time, a ...

  10. [转发]jQuery Validation范例

    验证操作类formValidatorClass.js参照文件有: http://www.cnblogs.com/easyinsc/archive/2009/02/27/1407826.html htt ...