- 浏览: 237983 次
- 性别:
- 来自: 常州
文章分类
- 全部博客 (165)
- Java基础 (49)
- 开发工具 (3)
- Python基础 (1)
- Oracle基础 (9)
- Java 符号计算 (0)
- 计算机基本原理 (10)
- SQL (6)
- javascript (16)
- HTML (2)
- XML (4)
- 程序员之路 (7)
- JDBC (1)
- Unicode (0)
- 字符编码 (3)
- JSP基础 (2)
- Servlet&JSP (9)
- MySQL基础 (1)
- UML基础 (1)
- Hibernate (2)
- Java包 (1)
- Spring (1)
- Struts2 (9)
- 系统命令 (1)
- Tomcat (1)
- Windows (1)
- Android (1)
- C#基础 (14)
- HTML5 (1)
- .NET基础 (1)
- 数据库基础 (2)
- ASP.NET基础 (7)
- 开源Java (3)
- 趣味算法 (1)
- 面向对象思想 (1)
- 软件应用 (1)
- Web工程 (1)
- jquery (2)
- JPA (0)
- 设计模式 (0)
最新评论
-
静夜独窗:
JavaBean组件能说的具体一点吗,我感觉这样说理解的不清晰 ...
EL 表达式语言 -
静夜独窗:
在Java中,不同字符集编码的转换是通过Unicode作为中介 ...
JavaWeb中的乱码产生与解决方案
dom4j
与JDOM一样,也是一种用于解析XML文档的开源库.dom4j是由早期开发JDOM的人分离出来的人独立开发的.
dom4j API使用了Java集合框架并完全支持DOM,SAX,JAXP
dom4j使用接口和抽象基类,dom4j的API相对复杂.
dom4j使用SAX解析器来分析XML文档.创建dom4j树.此外,dom4j也可以接收DOM格式的内容,并提供从dom4j树到SAX事件流或W3CDOM树的输出机制.
dom4j十分优秀,许多项目都用dom4j作为XML解析器.
面向接口编程
引用程序主要面向Document,Element,和ProcessingInstruction等接口编程,至于这些接口的底层实现,程序员无须关心.
dom4j实质上是以其他XML解析器为基础的,采用面向接口编程的方式将允许dom4j的底层在不同的解析机制之间自由切换.
支持多种解析机制
dom4j对底层原始的XML解析器进行了高度封装,正是这种封装简化了XML处理.
在org.dom4j.io包下提供了如下几个类.
DOMReader:负责根据W3C的DOM树创建dom4j.
SAXReader:基于SAX解析机制来解析一份XML文档,并将其转换为dom4j.
XPP3Reader:其底层需要依赖XML Pull Parser 3.x .来解析XML文档,并将其转换为dom4j树.
XPPReader:基于XML Pull Parser 2.x 解析器,目前不支持注释,CDATA和处理指令.
dom4j常用API
采用面向接口方式来解析XML文档,开发过程中所使用的API通常都是接口.
Node dom4j树中的所有节点的根接口
Branch 代表能包含子节点的节点,Branch接口下有两个子接口:Element和Document.
Element 代表XML元素
Document 代表XML文档
Attribute 代表XML元素属性
DocumentType 代表XML里的DOCTYPE.
ProcessingInstruction 代表XML文档里的处理指令.
CharacterData 所有文本元素的父接口,有CDATA ,Text,Comment三个子接口.
CDATA 代表XML里的CDATA段.
Text 代表XML里的文本内容
Comment 代表XML文档里的注释内容.
输出
DOMWriter:负责将dom4j树转换为W3C的DOM树.
SAXWriter:该输出工具类负责将dom4j树输出给SAX的ContentHandler处理.
XMLWriter:将dom4j树转换成对应的XML文档,并可输出到指定输出流中.
创建新的Document
DocumentFactory:提供一个createDocument()方法用于创建Document对象.
DocumentHelper: 创建XML文档各个组成部分,该类的所有方法都是静态方法.
创建XML文档
在org.dom包中提供了DocumentHelper类.
Document doc=DocumentHelper.createDocument();
Element eltRoot=DocumentHelper.createElement(“student”);
doc.setRootElement(eltRoot);
也可以先创建根元素对象,然后创建文档对象的同时指定根元素.
Element eltRoot=DocumentHelper.createElement(“student”);
Document doc=DocumentHelper.createDocument(eltRoot);
添加属性
eltRoot.addAttribute(“sn”,”10”);
添加子元素以及设置元素内容
在Branch接口中,定义了addElement()方法.
public Element addElement(String name)
该方法用指定的name为当前节点添加一个字元素节点,并返回新节点的引用.
例:添加两个子元素.
Element eltName=eltRoot.addElement(“name”) //创建元素,子元素.
Element eltAge=elt.addElement(“age”) //创建元素,子元素.
eltName.setText(“剑圣”); //给元素添加内容.
eltAge.setText(“128”); //给元素添加内容.
输出文档
org.dom4j.io包
DOMWrite类可以将dom4j树输出为W3C Document对象.
SAXWrite类可以将dom4j树作为SAX事件流输出.
XMLWrite类则提供了将dom4j树的各个部分以XML流的方式输出的能力.
将创建的XML文档输出到控制台:
XMLWriter xmlWriter=new XMLWriter();
xmlWriter.writer(doc);
将创建的XML文档输出到文件:
XMLWriter xmlWriter=new XMLWriter(new java.io.FileOutputStream(“student.xml”));
xmlWriter.writer(doc);
也可以使用java.io.Writer对象
XMLWriter xmlWriter=new XMLWriter(new java.io.FileWriter (“student.xml”));
xmlWriter.writer(doc);
xmlWriter.close();
注意如果不采用java.io.Writer 对象构建的XMLWriter对象,其底层代码设置了自动刷新,也就是说,对缓冲的输出,一旦调用了XMLWriter对象的writer()方法,将会自动刷新.
而对java.io.Writer对象构建XMLWriter对象,则没有设置自动刷新,所以在调用writer()方法后,需要调用xmlWriter.close(); 或者xmlWriter.flush();
注意XMLWriter继承自org.xml.sax.helpers.XMLFilterImpl类,而不是从java.io.Writer类派生而来,它所提供的flush() 和close() 方法只是内部java.io.Writer对象的flush() 和close()方法的包装.
格式
控制文档输出格式的类
org.dom4j.io.OutputFormat 用于设置输出文档字符编码,设置行分隔符及控制使用的缩进字符串等.
例:设置输出4个空格作为缩进字符串,元素之间添加新行
OutputFormat outFmt=new OutputFormat(“ ”,true);
XMLWriter xmlWriter=new XMLWriter(outFmt);
xmlWriter.writer(doc);
例:美化的格式输出文档,设置GB2312,并用4个空格作为缩进.
OutputFormat outFmt=OutputFormat.createPrettyPrint();
outFmt.setEncoding(“GB2312”);
outFmt.setIndent (“ ”);
XMLWriter xmlWriter=new XMLWriter(outFmt);
xmlWriter.writer(doc);
构建dom4j树
org.dom4j.io包.
DOMReader:负责根据W3C的DOM树创建dom4j树.
SAXReader:基于SAX解析机制来解析一份XML文档,并从不同的输入源来构造dom4j树.
以SAXReader类来构造dom4j文档对象:
SAXReader saxReader=new SAXReader();
File file=new File(“student.xml”);
Document doc=saxReader.read(file);
以DOMReader类来构造dom4j文档对象:
DocumentBuilderFactory dbf= DocumentBuilderFactory.newInstanc();
DocumentBuilder db= dbf.new DocumentBuilder();
File file=new File(“student.xml”);
org.w3c.Document document=db.parse(file);
DOMReader domReader=new DOMReader();
org.dom4j.Document doc= domReader.read(document); //W3C DOM document转成dom4j树
访问根元素
Document类,getRootElement()方法,用于返回文档下的根元素.
Element root=doc.getRootElement();
访问节点
要得到某个元素的所有子元素.
java.util.List childrenList=elt. elements(); //
要得到某个元素的指定名称的子元素
java.util.List childrenList= elt. elements(“student”); //
要得到某个元素的指定名称的第一个子元素
Element eltChild= elt. element(“student”); //
迭代所有子元素
for(java.util.Iterator it=root.elementIterator();it.hasNext();){
Element element=(Element)it.next();
……
}
XPath
dom4j中集成了XPath的支持.选择节点时,可以直接使用XPath表达式.
为了能够编译执行XPath表达式.需要配置dom4j中自带的jaxen包. jaxen包是一个用Java开发的开源XPath引擎,用于配置各种基于XML的对象模型,如DOM,XOM,dom4j,JDOM.
例:
得到student.xml中所有的<name>元素
java.util.List l= root. selectNodes(“//name”); //
选择属性sn=01的<student>元素
java.util.List l= root. selectNodes(“//student[@sn=’01’]”); //
删除元素
要删除某个元素,使用Branch接口中定义的remove()方法.
Element eltStu=root.element(“student”);
root.remove (eltStu); //
访问属性
要得到某个元素的所有属性
java.util.List attrList=elt. attributes(); //
要得到指定的属性
Attribute attr=elt. attribute(“sn”); //
要得到指定的属性值
String attrValue=elt. attributeValue(“sn”); //
要删除某个属性
elt. remove(elt. attributeValue(“sn”)); //
使用DTD验证
使用XML Schema验证
发表评论
-
Java NIO 基础学习
2013-09-21 16:24 938零、概述 1、传统IO的问题 2、非阻塞IO ... -
try finally 与 return
2013-09-02 16:11 9591、try、catch、finally语句中,在如果try ... -
Java的传值
2013-07-21 13:06 950这个问题一直以来都有误区。本质原因是那些写书的人,喜欢用“传 ... -
Java多线程——synchronized的问题
2013-06-14 15:51 1042一直以来都存在这样的问题: 多线程操作同一对象。该对象有 ... -
Java与操作系统的交互
2013-05-05 22:08 1706System类 System表示Java程序的运行平台。S ... -
java枚举
2013-04-06 15:59 900枚举,之前一直忽视了其存在。其实挺有用。 java5 ... -
Java语法细节
2013-02-03 11:19 925final关键字 final修饰的量以视为常量,当fin ... -
Java Socket 学习笔记
2013-01-29 23:42 956Socket:英文中的意思是插座。 两个Java应用程序 ... -
Java 线程同步
2013-01-27 23:17 1034理解Java线程状态: ... -
Java 与 C# 计算性能比较
2012-11-02 14:51 1160程序:寻找2亿以内的最大素数,从2开始寻找。 Java程序: ... -
Java数组的操作
2012-10-12 11:23 847一、复制数组 java.lang.System类中的静态 ... -
Java容器
2012-10-09 00:33 883Java集合类就像容器。把多个对象的引用放进容器中。即集合类主 ... -
Java日期处理
2013-01-31 23:05 859不得不吐槽一下Java的日期处理。太不爽了。 基本 ... -
java:Excel
2012-09-27 09:06 1123jxl操作excel 在开源世界中,有两套比较有影响的API ... -
关于分页显示的页码
2012-08-21 13:30 1268分页显示数据时常常需要将页码列出来。 此处的Page类主要关 ... -
JDOM基础
2012-07-07 17:20 1943JDOM Java Document Object Mode ... -
线程优先级 && 后台线程 && join线程
2012-07-02 23:08 46线程优先级 每个线 ... -
Java线程的运行状态(线程的生命周期)
2012-07-02 22:56 900新建和就绪 ... -
Java多线程 Thread类 和 Runnable接口
2012-07-02 22:13 1519Java的线程,即一个Thre ... -
Java反射
2012-07-02 20:22 848编译时类型和运行时类型 Java程序中的对象在运行时都会出现 ...
相关推荐
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、查询和修改变得更为简单。在本文中,我们将深入探讨DOM4J 1.6.1版本的安装及其在Maven项目中的应用。 首先,DOM4J...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。这次我们有两个版本的DOM4J库:1.6.1和2.0.0-ALPHA。这两个版本在功能、性能和API设计上都有所...
标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的API,使得开发者可以方便地读取、写入、修改以及操作XML文件。DOM4J 1.6.1是这个库的一个稳定版本,发布于较早时期,但依然广泛应用于许多Java...
另一份重要的资源是"dom4j-2.1.3-sources.jar",它提供了DOM4J库的源代码,允许开发者深入研究DOM4J的内部实现,对于理解DOM4J的工作原理、进行扩展或者调试都是不可或缺的。通过阅读源代码,开发者可以学习到如何...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,但它并不仅仅是一个DOM实现,它还包含...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单。DOM4J的名字来源于“Document Object Model for Java”,它采用面向对象的设计思想,提供了...
《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...
赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...
DOM4J是一个强大的Java库,专门用于处理XML文档。它是一个灵活且高性能的XML解析器,提供了丰富的API来创建、修改和操作XML数据。在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它...
标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...
DOM4J 2.1.1 是一个针对Java平台的高效、开源的XML处理库,其全称为“Document Object Model for Java”。这个库提供了一系列强大的API,使得开发人员能够轻松地解析、创建、修改和操作XML文档。XML(eXtensible ...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的方式来解析、创建、操作和理解XML数据。这个库在Java开发中广泛使用,因为它提供了比标准Java DOM API更简单、性能更好的XML处理方式。以下是...
当我们遇到“java.lang.ClassNotFoundException: org.dom4j.DocumentException”的错误提示时,这通常意味着系统中缺少了DOM4j库,只需将“org.dom4j.jar”添加到项目类路径中即可解决此问题。 DOM4J是基于DOM和SAX...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高性能的API,使得在Java应用程序中解析、创建、修改和操作XML文档变得容易。DOM4J因其易用性和丰富的功能集,在Java社区中广受欢迎,尤其在处理大型...
DOM4J 的使用 DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义...