Xml解析之PULL解析 例2
<?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的更多相关文章
- Xml解析之PULL解析 例1
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id=" ...
- 非常简单的XML解析(SAX解析、pull解析)
这里只是把解析的数据当日志打出来了 非常简单的xml解析方式 package com.example.demo.service; import java.io.IOException; import ...
- XMl解析之Pull解析
HttpUtils: package cn.qf.parser; import java.io.BufferedOutputStream; import java.io.FileOutputStrea ...
- XML 序列化与PULL解析
简介 Pull解析XML XmlPullParser解析器的运行方式与SAX解析器相似.它提供了类似的事件(开始元素和结束元素),但需要使用parser.next()方法来提取它们.事件将作为数值代码 ...
- Android之Pull解析XML
一.Pull解析方法介绍 除了可以使用SAX和DOM解析XML文件,也可以使用Android内置的Pull解析器解析XML文件.Pull解析器的运行方式与SAX解析器相似.它也是事件触发的.Pull解 ...
- Android pull解析xml文件
本文介绍android中使用pull来解析xml文件 先自己写一个xml文件,存一些天气信息 <?xml version="1.0" encoding="UTF-8 ...
- 安卓使用pull解析器解析XML文件
学习一下: public class MainActivity extends Activity { List<City> cityList; @Override protected vo ...
- XML解析之PULL
在Android中极力推荐的xmlpull方式解析xml. 为什么 STAX 解析方式 效率 好于 SAX ? 1.SAX 无选择性的,所有事件都会处理 解析方式,Stax 由用户控制需要处理事件类型 ...
- pull解析xml文件
pull解析xml文件 先自己写一个xml文件,存一些天气信息 拿到xml文件 InputStream is = getClassLoader().getResourceAsStream(" ...
随机推荐
- FatSecret Platform API
在现阶段饮食类的APP发展的非常迅猛,尤其在校园中,学生只需要凭借一个手机就能买到自己想要的食物,真正做到了足不出户.可是如果我们想独立完成一个app就需要有相应的数据支持,这里给大家介绍一个国外的开 ...
- 搜集整理一些Cron表达式例子
1.cronExpression配置说明 字段 允许值 允许的特殊字符 秒 0-59 , - * / 分 0-59 , - * / 小时 0-23 , - * / 日期 1-31 , - * ? / ...
- Leet Code OJ 226. Invert Binary Tree [Difficulty: Easy]
题目: Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 思路分析: 题意是将二叉树全部左右子数 ...
- pring MVC过滤器-HttpPutFormContentFilter
在Spring MVC过滤器-HiddenHttpMethodFilter中我们提到,jsp或者说html中的form的method值只能为post或get,我们可以通过HiddenHttpMetho ...
- Unity3D 播放视频
http://blog.csdn.net/jbjwpzyl3611421/article/details/12780625 导入: 影片纹理是通过Apple QuickTime导入的(支持.mov, ...
- Codeforces Round #FF (Div. 1)-A,B,C
A:DZY Loves Sequences 一開始看错题了. .sad. 题目非常easy.做法也非常easy.DP一下就好了. dp[i][0]:到当前位置,没有不论什么数改变,得到的长度. dp[ ...
- QtGui.QFileDialog
The QtGui.QFileDialog is a dialog that allows users to select files or directories. The files can be ...
- libsvm处理多分类的问题
SVM是一个二分类器,当遇到多类别的时候,一般采取如下两种策略. a.一对多法(one-versus-rest,简称1-v-r SVMs).训练时依次把某个类别的样本归为一类,其他剩余的样本归为另一类 ...
- openerp创建动态视图-fields_view_get
openerp的视图结构是以XML的格式存放于ir.ui.view表中,属于静态格式,设计之后就固定, 但可以通过在model中重写fields_view_get函数,在视图加载时修改arch属性,动 ...
- java学习笔记2015-6-5
今天晚上不须要不论什么编译器 记事本编写代码 1.安装JDK配置 2.JDK JRE的关系 3.基本的语法 常量 变量 数据类型 逻辑运算符 流程控制语句 4.小的练习 问题 5.课后作业 ...