浅谈用java解析xml文档(三)
接上一篇,本文介绍使用JDOM解析xml文档,
首先我们还是应该知道JDOM从何而来,是Breet Mclaughlin和Jason Hunter两大Java高手的创作成果,2000年初,
JDOM作为一个开放源代码项目正式开始研发。JDOM是一种解析XML的Java工具包。
JDOM基于树状结构,利用纯JAVA技术对XML文档实现解析、生成、序列化及其它操作。
我们从以下步骤开始解析:
(1)、通过JDOM的API创建一个SAXBuilder的对象
SAXBuilder saxBuilder = new SAXBuilder();
(2)、创建一个输入流,将xml文件加载到输入流中
InputStream in = new FileInputStream("src/res/books.xml");
(3)、通过saxBuilder 的builder()方法,将输入流加载到saxBuilder 中,返回一个Document对象的一个引用,
Document document = saxBuilder.build(in );
然后我们通过document对象获取xml的根节点。
Element rootElement = document.getRootElement();
接下来我们就对xml 的子节点进行操作,获取根节点下子节点list集合。
List<Element> bookList = rootElement.getChildren();
遍历集合 bookList,获取子节点的名称和子节点的值,
for (Element book : bookList) {
List<Attribute> attrList = book.getAttributes();
for (Attribute attr : attrList) {
// 获取属性名
String attrName = attr.getName();
// 获取属性值
String attrValue = attr.getValue();
System.out.println("属性名:" + attrName + "----属性值:"
+ attrValue);
}
// 对book节点的子节点的节点名以及节点值的遍历
List<Element> bookChilds = book.getChildren();
for (Element child : bookChilds) {
System.out.println("节点名:" + child.getName() + "----节点值:"
+ child.getValue());
}
}
以下是books.xml
<?xml version="1.0" encoding="UTF-8"?>
<bookstore>
<book id="1">
<name>老人与海</name>
<author>海明威</author>
<year>1955</year>
<price>45</price>
</book>
<book id="2">
<name>书剑恩仇录</name>
<year>1959</year>
<price>24</price>
<language>chinese</language>
</book>
</bookstore>
输出的结果为:
属性名:id----属性值:1
节点名:name----节点值:老人与海
节点名:author----节点值:海明威
节点名:year----节点值:1955
节点名:price----节点值:45
属性名:id----属性值:2
节点名:name----节点值:书剑恩仇录
节点名:year----节点值:1959
节点名:price----节点值:24
节点名:language----节点值:chinese
这样我们最简单的JDOM解析xml文件就完成了,总结一个JDOM的优缺点。
优点: ①是基于树的处理XML的Java API,把树加载在内存中
②没有向下兼容的限制,因此比DOM简单
③速度快,缺陷少
④具有SAX的JAVA规则
缺点: ①不能处理大于内存的文档
②JDOM表示XML文档逻辑模型。不能保证每个字节真正变换。
③针对实例文档不提供DTD与模式的任何实际模型。
④不支持与DOM中相应遍历包
最适合于:JDOM具有树的便利,也有SAX的JAVA规则。在需要平衡时使用。
浅谈用java解析xml文档(三)的更多相关文章
- 浅谈用java解析xml文档(四)
继续接上一文,这一阵子因为公司项目加紧,导致最后一个解析xml文档的方式,还没有总结,下面总结使用dom4J解析xml. DOM4J(Document Object Model for Java) 使 ...
- 浅谈用java解析xml文档(二)
上一文中总结了dom解析xml文档的方式,本文开始总结使用SAX解析xml 的方式及它的优缺点! SAX(Simple API for XML),是指一种接口,或者一个软件包. 首先我们应该知道SAX ...
- 浅谈用java解析xml文档(一)
关于xml本身的语法及使用的环境不多说了,网上有很多规则, 然对xml文档进行解析,一般分为四种解析方式,基于java官方文档的Dom 和Sax解析,还有就是基于 第三方jar包的 Jdom 和 Do ...
- java 解析XML文档
Java 解析XML文档 一.解析XML文档方式: 1.DOM方式:将整个XML文档读取到内存中,按照XML文件的树状结构图进行解析. 2.SAX方式:基于事件的解析,只需要加载XML中的部分数据,优 ...
- Java解析XML文档(简单实例)——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- java解析xml文档(dom)
DOM解析XML文档 读取本地的xml文件,通过DOM进行解析,DOM解析的特点就是把整个xml文件装载入内存中,形成一颗DOM树形结构,树结构是方便遍历和和操纵. DOM解析的特性就是读取xml文件 ...
- JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)
使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...
- java 解析xml文档---通过XmlPullParser解析方式
package com.zx; import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayLi ...
随机推荐
- O(1)时间删除链表的已知结点
这题并不需要从头结点遍历到已知结点,只需要知道已知结点,将改结点下一个结点赋值给它,再删除这个下一个结点就行,其中还需要考虑各种情况. 1)链表为空或者已知结点为空 2)链表只有一个结点,这个结点就是 ...
- android NDK 实用学习(四)-类缓存
1,为什么需要类缓存: 答:由于频繁的查找类及类成员变量需要很大的时间与空间开销,可参考如下文章: http://www.ibm.com/developerworks/cn/java/j-jni/ h ...
- WebAPI 小知识
1.HttpResponseMessage.ReasonPhrase可以返回原因说明短语, 用JQuery中的$.ajax调用,返回函数第三个参数可以获取,如下: success:function(d ...
- ListView inside a ScrollView
ScrollView里面放ListView, ListView无法展开的解决方法 http://stackoverflow.com/questions/18367522/android-list-vi ...
- [iOS基础控件 - 3.2] transform的使用
A.概念 可以控制UIView的位置.尺寸.旋转 transform是一种状态,每次都是相对于原始状态作出的形变 1.位置移动 // 向上移动 - (IBAction)top:(UIButto ...
- SQL Server 2016原生支持JSON
转载原地址: http://www.cnblogs.com/lyhabc/p/4747694.html SQL Server 2005 开始支持 XML 数据类型,提供原生的 XML数据类型.XML ...
- poj 4045 (树形DP)
先选一点为根节点找出所有父节点i到下面所有点距离和dp[i],该父节点下面有多少个点Node[i]. 然后求出所有节点的所有非子节点到该点的距离dp1[v]+=(dp1[u]+(dp[u]-dp[v] ...
- Arrays 类操作 Java 的数组排序
使用 Arrays 类操作 Java 中的数组 Arrays 类是 Java 中提供的一个工具类,在 java.util 包中.该类中包含了一些方法用来直接操作数组,比如可直接实现数组的排序.搜索等( ...
- Uploadify 3.2 参数属性、事件、方法函数详解
一.属性 属性名称 默认值 说明 auto true 设置为true当选择文件后就直接上传了,为false需要点击上传按钮才上传 . buttonClass ” 按钮样式 buttonCursor ‘ ...
- http://www.360doc.com/content/10/1012/09/3722251_60285817.shtml
http://www.360doc.com/content/10/1012/09/3722251_60285817.shtml http://www.docin.com/p-163063250.htm ...