Dom4j的使用(一)(转自csdn冰云)
Dom4j
是一个易用的、开源的库,用于
XML
,
XPath
和
XSLT
。它应用于
Java
平台,采用了
Java
集合框架并完全支持
DOM
,
SAX
和
JAXP
。
在国内比较流行的是使用
JDOM
作为解析器,两者各擅其长,但
DOM4J
最大的特色是使用大量的接口,这也是它被认为比
JDOM
灵活的主要原因。大师不是说过么,
“
面向接口编程
”
。目前使用
DOM4J
的已经越来越多。如果你善于使用
JDOM
,不妨继续用下去,只看看本篇文章作为了解与比较,如果你正要采用一种解析器,不如就用
DOM4J
吧。
它的主要接口都在
org.dom4j
这个包里定义:
Attribute
|
Attribute
定义了
XML
的属性
|
Branch
|
Branch
为能够包含子节点的节点如
XML
元素
(Element)
和文档
(Docuemnts)
定义了一个公共的行为,
|
CDATA
|
CDATA
定义了
XML CDATA
区域
|
CharacterData
|
CharacterData
是一个标识借口,标识基于字符的节点。如
CDATA
,
Comment, Text
.
|
Comment
|
Comment
定义了
XML
注释的行为
|
Document
|
定义了
XML
文档
|
DocumentType
|
DocumentType
定义
XML DOCTYPE
声明
|
Element
|
Element
定义
XML
元素
|
ElementHandler
|
ElementHandler
定义了
Element
对象的处理器
|
ElementPath
|
被
ElementHandler
使用,用于取得当前正在处理的路径层次信息
|
Entity
|
Entity
定义
XML entity
|
Node
|
Node
为所有的
dom4j
中
XML
节点
定义了多态行为
|
NodeFilter
|
NodeFilter
定义了在
dom4j
节点中产生的一个滤镜或谓词的行为(
predicate
)
|
ProcessingInstruction
|
ProcessingInstruction
定义
XML
处理指令
.
|
Text
|
Text
定义
XML
文本节点
.
|
Visitor
|
Visitor
用于实现
Visitor
模式
.
|
XPath
|
XPath
在分析一个字符串后会提供一个
XPath
表达式
|
看名字大致就知道它们的涵义如何了。
要想弄懂这套接口,关键的是要明白接口的继承关系:
- interface java.lang.Cloneable
- interface org.dom4j.Node
- interface org.dom4j.Attribute
- interface org.dom4j.Branch
- interface org.dom4j.Document
- interface org.dom4j.Element
- interface org.dom4j.CharacterData
- interface org.dom4j.CDATA
- interface org.dom4j.Comment
- interface org.dom4j.Text
- interface org.dom4j.DocumentType
- interface org.dom4j.Entity
- interface org.dom4j.ProcessingInstruction
一目了然,很多事情都清楚了。大部分都是由
Node
继承来的。知道这些关系,将来写程序就不会出现
ClassCastException
了。
简单说一下如何使用。
1.
读取并解析
XML
文档:
读写
XML
文档主要依赖于
org.dom4j.io
包,其中提供
DOMReader
和
SAXReader
两类不同方式,而调用方式是一样的。这就是依靠接口的好处。
//
从文件读取
XML
,输入文件名,返回
XML
文档
public Document read(String fileName) throws MalformedURLException, DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File(fileName));
return document;
}
|
其中,
reader
的
read
方法是重载的,可以从
InputStream, File, Url
等多种不同的源来读取。得到的
Document
对象就带表了整个
XML
。
2.
取得
Root
节点
读取后的第二步,就是得到
Root
节点。熟悉
XML
的人都知道,一切
XML
分析都是从
Root
元素开始的。
public Element getRootElement(Document doc){
return doc.getRootElement();
}
|
参考资料:
DOM4J
文档
Java
中的
XML
:
文档模型,第一部分:性能
[url]http://www-900.ibm.com/developerWorks/cn/xml/x-injava/index.shtml[/url]
Java
中的
XML
:
Java
文档模型的用法
[url]http://www-900.ibm.com/developerWorks/cn/xml/x-injava2/index.shtml[/url]
Java XML API
漫谈
by robbin
[url]http://www.hibernate.org.cn:8000/137.html[/url]
职场 休闲 dom4j
0
收藏
上一篇:程序开发八荣八耻 下一篇:如何解决一些项目开发和维护中的问...
1条评论
按时间倒序 按时间正序推荐专栏更多

微服务技术架构和大数据治理实战
大数据时代的微服务之路
共18章 | 纯洁微笑
¥51.00 702人订阅
订 阅

基于Python的DevOps实战
自动化运维开发新概念
共20章 | 抚琴煮酒
¥51.00 551人订阅
订 阅
猜你喜欢
我的友情链接 eclipse插件 (4)Reactor 3快速上手——响应式Spring的道法术器 子网划分的两个例子 java 中文繁简体转换工具 opencc4j java 支持分词的高性能拼音转换工具,速度是 pinyin4j 的两倍 Qt学习之路(4):初探信号槽 图解DHCP的4步租约过程 在线IPv4转换为IPV6,IPV6转为IPV4的工具 iptables基础(三):-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited 使用phpize建立php扩展 Cannot find config.m4. J2SDK 1.5、1.6 & 中文版API(全) Swagger之外的选择 项目:在线OJ--MinMIn's Online OJ springboot + rabbitmq 做智能家居,我也没想到会这么简单 百度开源的分布式唯一ID生成器UidGenerator,解决了时钟回拨问题 面试官:小伙子,你给我说一下Java Exception 和 Error 的区别吧? 去年去阿里面试,被问到ArrayList和LinkedList,我是这样回答的! 求求你们了,别再写满屏的 try catch 了! JVM内存溢出分析:堆内存溢出+虚拟机+方法区——JVM系列(二)


扫一扫,领取大礼包

0
1
分享
Eyonsanzer

Ctrl+Enter 发布
发布
取消