使用dom4j操作xml

1 简介

1.1 DOM4j简介与配置

    Dom4j是一个开源的Java XML 解析处理工具,用来读写XML文件,它应用于Java平台,采用了Java集合框架并完全支持DOM, SAX和JAXP。具有性能优异、功能强大和极易使用的特点。可以作为解析XML文档析首先API。

      Dom4j是sourceforge.net上的一个开源项目,可以到http://sourceforge.net/projects/dom4j上下载最新版本。目前的最新版本是1.6。这里我们使用的是dom4j1.6,下载后的文件是一个名为dom4j1.6.1的压缩包,解压后有一个dom4j-1.6.1的jar文件,这个是我们需要导入的包,在lib文件夹下还有一个jaxen-1.1-beta-6的jar文件,一般情况下这个也要导入,否则会抛出java.lang.NoClassDefFoundError: org/jaxen/JaxenExcepiton的异常。

    导入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar文件的方法:首先在工程目录下新建一个文件夹,命名为lib,再把解压后的dom4j1.6.1的文件夹放到lib下。然后在Eclipse中右击项目名称,选择Build Path->Add External Archievs,导入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar。

1.2 示例XML文档(test.xml)

    如下所示的是我们创建的一个示例XML文档test.xml:

 

      这是一个简单的XML文档,用于描述学生的基本信息,包括学号、姓名、年龄。为了便于理解,后面的xml操作均以此文档为基础。以下是程序执行修改后的xml文档。

 

      在这里我们主要对文档做了以下几个修改:(1)增加了一个学生"wen"的信息;(2)删除了一个学生"momo"的信息;(3)将学生"luo"的年龄修改为22,学号修改为050。这只是一个示例操作,包括了xml文档的基本处理。

2 文档创建

      本节讨论使用dom4j 创建XML文档的过程,并创建示例XML文档test.xml。

2.1 流程分析

      使用import语句导入dom4j API类以及程序中需要用到的其他类:

      使用DocumentHelper类创建一个文档实例,DocumentHelper是生成XML文档结点的dom4j API工厂类:

      使用addComment()方法给文档添加注释"This is a test of xml":

      使用addElement()方法添加根元素"class" ,addElement()用于向XML文档中增加元素:

      使用addElement()方法向根元素中添加子元素"student":

      使用addAttribute()方法向子元素"student"添加属性"no",即新添加的学生的学号为"053":

      使用addElement()方法向子元素"student"增加name元素并设置元素的文本:

      使用addElement()方法向子元素"student"增加age元素并设置元素的文本:

      这样就把一个学生的信息,包括学号、姓名、年龄存储进来。要添加更多的学生信息,操作同上,这里不一一列举。

      所有信息添加完成后,要对文档进行保存,下面是保存文件过程中用到的主要方法。

      使用OutputFormat()创建输出格式对象,并设置其字符集:

      使用XMLWriter()创建XML文件输出流:

2.2 代码示例

      下面是关于创建XML文档的源程序。

 

3 文档修改

      本节讨论使用dom4j 修改XML文档的过程,并修改示例XML文档test.xml。

      在这一节,修改内容主要有三项:

      (1)增加结点;

      (2)删除结点;

      (3)修改结点的内容和属性;

3.1 增加结点

3.1.1 流程分析

      这里我们所作的修改是增加一个学生的信息,这里的结点增加过程与我们创建XML文档时添加结点的过程相同,只是要先解析XML文档,获取根结点,然后再进行结点的添加。

      首先要使用SAXReader对XML文档进行解析,然后使用getRootElement()方法获取文档的根结点。这两个方法在文档读取过程都有介绍。接下来的结点增加过程与文档创建时的方法一样,这里也不再赘述。

3.2 删除结点

3.2.1 流程分析

      在这一节我们所作的修改是查找到某个学生的信息,然后将其删除。对于查找的方法有两种,一种是根结点遍历法,还有一种是用xpath查找相应的内容。

       这一节中我们先使用根结点遍历法进行查找。

      首先使用SAXReader对XML文档进行解析,然后使用getRootElement()方法获取文档的根结点。

      这两个方法在文档读取过程中有介绍。这里不再赘述。

      然后使用elementIterator()对根结点进行遍历,查找到相应的内容,并使用remove()方法将其删除。

3.3 修改结点的内容和属性

3.3.1 流程分析

      在这一节我们所作的修改是查找到某个学生,对其年龄和学号进行修改。一个是对于子元素内容的修改,一个是对元素属性的修改。上一节提到有两种查找方法,根结点遍历法和xpath。在这一节中我们将使用xpath对XML文档进行查找。

      首先使用SAXReader对XML文档进行解析,方法同上。

      通过xpath对"student"进行查找:

      将查找到的学生姓名与指定名字进行比较,如果相同,则查找完成,使用setText()方法对元素的内容进行修改,使用setValue()对元素的属性进行修改:

3.4 代码示例

      下面是关于修改XML文档的源程序。

      以下例子程序用于修改XML文档test.xml。

 

4 参考资料

      [1]D. Vohra, "使用dom4j解析xml","http://www.ibm.com/developerworks/cn/xml/x-dom4j.html".

      [2]C. S. Horstmann, G. Cornell, "Core JAVA(8th Edition)", Prentice Hall PTR, 2008.

 

    本文PDF下载地址:http://download.csdn.net/source/3350099

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值