1 dom4j介绍
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。dom4j是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。这是必须使用的jar包, Hibernate用它来读写配置文件。
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 表达式
2 使用dom4j创建xml文档
Document document = DocumentHelper.createDocument();
通过这句定义一个XML文档对象。
Element root = document.addElement(“根节点名称”);
通过这句定义一个XML元素,这里添加的是根节点。
Element有几个重要的方法:
addComment : 添加注释
addAttribute : 添加属性
addElement : 添加子元素
最后通过XMLWriter生成物理文件,默认生成的XML文件排版格式比较乱,可以通过OutputFormat类格式化输出,默认采用createCompactFormat()显示比较紧凑,最好使用createPrettyPrint()。
实例代码
1 package cn.mars.app.txn.whpf;
2
3 import java.io.FileOutputStream;
4
5 import org.dom4j.Attribute;
6 import org.dom4j.Document;
7 import org.dom4j.DocumentHelper;
8 import org.dom4j.Element;
9 import org.dom4j.io.OutputFormat;
10 import org.dom4j.io.XMLWriter;
11
12 public class Dom4jTest {
13
14 public static void main(String[] args) {
15 // 创建文档。
16 Document document = DocumentHelper.createDocument();
17 // 设置文档DocType,这里为了举例,添加hibernate的DocType
18 document.addDocType("hibernate-configuration", "-//Hibernate/Hibernate Configuration DTD 3.0//EN",
19 "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd");
20 // 文档增加节点,即根节点,一个文档只能有一个根节点,多加出错
21 Element root = document.addElement("skills");
22 // 添加注释
23 root.addComment("第一个技能");
24 /