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 = <person> <name>James</name> </person>;
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(JamesStrachan); 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成功");
}
}}
分享到:
相关推荐
我写的几个dom4j的入门例子,有关读和写的常见功能。
dom4j基础入门文档,与 W3C DOM API 相比,使用 dom4j 所包含的解析器的好处是 dom4j 拥有本地的 XPath 支持。
DOM4J jar包 所有的包 xml解析 dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1 导入直接使用
dom4j dom4j dom4j dom4j dom4j dom4j
赠送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文档-...
JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源代码 dom4j-1.6.1JavaEE源...
中文 DOM4j入门例子 一。解析XML 二。使用迭代器: 三。强大的导航使用XPath: 四。快速循环 五。创建一个新的XML文档 六。记录到一个文件中的一个文件, 七。转换为字符串 八。用XSLT样式文档
赠送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-1.6.1.zip与 dom4j-2.0.0-ALPHA-2.jar
maven dom4j 1.6.1安装包
dom4j帮助文档 官方API All Classes Packages org.dom4j org.dom4j.bean org.dom4j.datatype org.dom4j.dom org.dom4j.dtd org.dom4j.io org.dom4j.jaxb org.dom4j.rule org.dom4j.rule.pattern org.dom...
dom4j-1.6.1.jar,Dom4j是一个Java的XML API接口,是jdom的进化版,dom4j基本用来读写xml文件,是一个十分优秀的JavaXML API接口
这个压缩包是一个关于DOM4J的压缩包,里面包含了DOM4J的帮助文档,DOM4J的使用教程,以及DOM4J这个JAVA包。保证这个压缩包是网上面最全的有关DOM4J的文档。
dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的...
dom4j.rar 包括dom4j API帮助文档和dom4j.jar包.dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点
org.dom4j.bean An implementation of the dom4j API which allows JavaBeans to be used to store and retrieve attribute values from Element. org.dom4j.datatype An implementation of the dom4j API which ...
Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc Dom4j解析XML文档.doc
dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码 dom4j 源码
DOM4j教程 例子 DOM4j教程 例子 DOM4j教程 例子 DOM4j教程 例子
Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包Dom4j常用jar包