DOM4j是一个易用的,开源的JAVA操作XML的API,写过一篇4种XML操作API的比较,DOM4j是性能和易用行最佳的。因此做一个小教程,供初学者学习。
学习DOM4j首先就先来了解下它主要的包
DOM4j所有的接口都在org.dom4j这个包里定义着
org.dom4j.Attribute : Attribute接口定义了XML文件的属性
org.dom4j.Branch : Branch为能够包含子节点的节点如XML元素和文档定义了一个公共行为
org.dom4j.CDATA : CDATA定义了XML CDATA区域
org.dom4j.CharacterData: CharacterData是一个标识接口,标识基于字符的节点。
org.dom4j.Comment : Comment定义了XML注释的行为
org.dom4j.Document : Docement接口定义了XML文档
org.dom4j.Element : Element定义了XML元素
org.dom4j.ElementHandler: ElementHandler定义了Element对象的处理器
org.dom4j.ElementPath : 被ElementHandler使用,用于取得当前正在处理的路径层次信息
org.dom4j.Entity : Entity定义XML entity
org.dom4j.Node : Node为所有的dom4j中XML节点定义了多态行为
org.dom4j.NodeFilter : NodeFilter定义了在dom4j节点中产生的一个滤镜或谓词的行为
org.dom4j.ProcessingInstruction : ProcessingInstruction定义XML处理指令
org.dom4j.Text : Test定义了XML文本节点
org.dom4j.Visitor : Visitor用于实现Visitor模式
org.dom4j.XPath : XPath在分析一个字符串后会提供一个XPath表达式
下面说下主要的实用方法
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;
}
2:取得ROOT节点
如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。
public Element getRootElement(Document doc){
return doc.getRootElement();
}
3:遍历XML树,这里有二种方法
(1): 枚举
// 枚举所有子节点
for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
Element element = (Element) i.next();
// do something
}
// 枚举名称为foo的节点
for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
Element foo = (Element) i.next();
// do something
}
// 枚举属性
for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
Attribute attribute = (Attribute) i.next();
// do something
}
(2) : 递归
public void treeWalk() {
treeWalk(getRootElement());
}
public void treeWalk(Element element) {
for (int i = 0, size = element.nodeCount(); i < size; i++) {
Node node = element.node(i);
if (node instanceof Element) {
treeWalk((Element) node);
} else { // do something....
}
}
}
4:字符串与XML的转换
// XML转字符串
Document document = ...;
String text = document.asXML();
// 字符串转XML
String text = James ;
Document document = DocumentHelper.parseText(text);
5. 创建XML
这里创建一个XML,没有写
public Document createDocument() {
Document document = DocumentHelper.createDocument();
Element root = document.addElement(root);
Element author1 =
root
.addElement(author)
.addAttribute(name, James)
.addAttribute(location, UK)
.addText(James Strachan);
Element author2 =
root
.addElement(author)
.addAttribute(name, Bob)
.addAttribute(location, US)
.addText(Bob McWhirter);
return document;
}
6: XML 文件输出
FileWriter out = new FileWriter( foo.xml );
document.write(out);
DOM4j 的简单常用的方法上面总结了下,大家可以有一个印象,想要学的仔细了就要自己好好研究了,下面有一个以前写的小程序,实现了创建和编辑XML文件的功能。
package com.dom4j.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class NewXML {
/**
*
* 用DOM4J创建一个XML文件
* @param args
*/
public boolean newXMl(String fileName){
boolean returnValue=false;
//定义一个XML文档
Document docement=DocumentHelper.createDocument();
//设置XML文档的元素
Element rootElement=docement.addElement("DOM4J创建XML文档");
rootElement.addComment("镜花水月2007-4-24晚上创建");
Element nameElement=rootElement.addElement("镜花水月");
nameElement.addAttribute("名字","不告诉你");
Element schoolElement=nameElement.addElement("学校");
schoolElement.setText("西安翻译学院");
Element cityElement=rootElement.addElement("城市");
cityElement.setText("上海");
Element homeElement=cityElement.addElement("住址");
homeElement.setText("徐家汇");
//创建XML文档
try {
/** 格式化输出,类型IE浏览一样 */
OutputFormat format = OutputFormat.createPrettyPrint();
/** 指定XML编码 */
format.setEncoding("GBK");
XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)),format);
writer.write(docement);
writer.close();
return returnValue=true;
} catch (IOException e) {
e.printStackTrace();
}
return returnValue;
}
/**
*
* 用DOM4J修改一个XML文件
* @param args
*
*/
public boolean update(String fileName,String newFileName){
boolean returnValaue=false;
SAXReader reader=new SAXReader();
try {
Document docement=reader.read(new File(fileName));
List list=null;
list=docement.selectNodes("/DOM4J创建XML文档/镜花水月/@名字");
Iterator it=list.iterator();
while(it.hasNext()){
Attribute attribute=(Attribute) it.next();
if(attribute.getValue().equals("不告诉你")){
attribute.setValue("还是不告诉你");
}
}
//将就该写入新的文件
try {
//转码
OutputFormat format=OutputFormat.createPrettyPrint();
format.setEncoding("GBK");
XMLWriter writer=new XMLWriter(new FileWriter(new File(newFileName)),format);
writer.write(docement);
writer.close();
return returnValaue=true;
} catch (IOException e) {
e.printStackTrace();
}
} catch (DocumentException e) {
e.printStackTrace();
}
return returnValaue;
}
public static void main(String[] args) {
NewXML newXml=new NewXML();
String name="newXML.xml";
String newName="UpdateXML.xml";
if(!newXml.newXMl(name)){
System.out.println("创建出现错误!");
return ;
}else{
System.out.println("创建XML成功!");
}
if(!newXml.update(name,newName)){
System.out.println("修改出现错误!");
return;
}else{
System.out.println("修改XML成功");
}
}
}
分享到:
相关推荐
10. **Node**:`Node`是DOM4j中所有XML节点的基类,提供了统一的访问和操作方法,包括元素、属性、文本、注释等。 11. **NodeFilter**:`NodeFilter`定义了一个过滤器接口,允许你在遍历DOM4j树时根据特定条件筛选...
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
首先,DOM4J 1.6.1是较早的一个稳定版本,广泛应用于各种项目。它支持SAX和DOM解析器,同时提供了基于事件的解析模型和基于树的解析模型。此版本的主要特性包括: 1. 支持XPath:DOM4J提供了一种强大的方式来查询...
3. **基本概念**:介绍DOM4J中的核心类,如`Document`(文档对象)、`Element`(元素)、`Attribute`(属性)、`Text`(文本节点)等,以及它们之间的关系。 4. **解析XML**:讲解如何使用DOM4J解析XML文件,包括...
1. **灵活的文档构建**:DOM4J提供了多种方式来创建和修改XML文档,如通过元素、属性、文本节点等对象直接操作,或者使用XPath表达式定位。 2. **强大的查询能力**:DOM4J支持XPath,可以方便地通过路径表达式查找...
DOM4J中的Attribute类提供了创建、修改和删除属性的方法。 3. **Document**: Document类表示整个XML文档,是整个XML结构的根节点。它包含了XML文档的声明、元素、注释等所有信息。 4. **XPath**: DOM4J支持XPath...
2. **文档对象模型**:DOM4J提供了Element、Attribute、Namespace等类,这些类代表了XML文档中的元素、属性和命名空间。它们提供了丰富的API,可以方便地进行添加、删除、查找和修改操作。 3. **XPath支持**:DOM4J...
在Java应用程序中,DOM4J作为一个流行的选择,尤其在处理复杂的XML结构时,因为它提供了比标准DOM(Document Object Model)更简单和更有效的接口。 标题中的"dom4j.jar下载"指的是获取DOM4J库的可执行文件,即Java...
XML(eXtensible Markup Language)作为一种结构化数据格式,在网络应用、配置文件、数据交换等方面广泛应用,DOM4J作为其解析工具,为开发者提供了便利。 DOM4J的主要特点包括: 1. 易于使用:DOM4J的API设计直观...
DOM4J 是一个开源的 XML 解析包,由 dom4j.org 出品,应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM、SAX 和 JAXP。DOM4J 的主要特点是使用大量的接口,所有主要接口都在 org.dom4j 里面定义。 一、DOM4J ...
DOM4J的核心类包括`Element`、`Attribute`、`Document`和`Namespace`等,它们分别代表了XML文档中的元素、属性、文档和命名空间。 **XML解析:** DOM4J提供了多种解析XML文档的方式,如SAX、DOM和StAX。其中,SAX是...
**DOM4J API 应用文档详解** DOM4J 是一个强大的、开源的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改变得简单易行。DOM4J这个名字中的"4J"代表它是为Java设计的,而"DOM"则...
- DOM4J的核心思想是提供一个灵活的、面向对象的模型来处理XML文档,包括元素、属性、文本节点等。 - 它不仅支持标准的DOM API,还提供了基于事件的SAX解析器和一个XPath实现,以满足不同场景的需求。 2. **主要...
- **Element**:DOM4J中的元素类代表XML文档中的标签,包含了属性、子元素等信息。 - **Attribute**:元素的属性,用于描述元素的特性。 - **Document**:整个XML文档的根对象,包含根元素和其他元素。 - **...
**DOM4J库详解** DOM4J是一款强大的Java XML处理库,它提供了全面而灵活的API,用于处理XML文档。这个压缩包包含了DOM4J的三个不同版本:2.1.1、2.0.2和1.6.1,分别对应不同的Java环境兼容性。 1. **DOM4J 2.1.1**...
- **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...