使用JAVA处理XML文档数据,不仅可以做到对XML数据的解析,同时也可以实现XML文档的生成,以及在已经存在的XML文档中进行添加元素、删除元素、修改元素等一系列的操作。在这一节中,将向读者介绍使用JDOM来实现对XML数据的处理。

JDOM是一个开源项目,它基于树型结构,利用纯Java技术对XML文档实现解析、生成、序列化等操作。JDOM直接为Java编程服务。它利用Java语言的诸多特性(方法重载、集合概念以及映射),把SAX和DOM的功能有效地结合起来。因此,只需要有一个JDOM的jar包,就可以在Java程序中,使用JDOM来实现对XML数据的处理。

使用JDOM来生成XML文档下面介绍使用Eclipse来加载JDOM的jar包,同时利用JDOM来创建并生成一个XML文档。步骤如下。

  1. 在Eclipse中建立工程项目。单击"File"|"New"|"Project"命令菜单。
  2. 在弹出窗口中选择"Java Project",并单击"Next>"按钮。
  3. 在弹出的"New Java Project"窗口中,在"Project name"文本框内输入工程名,例如输入"JDOMDemo",之后单击"Finish"按钮。
  4. 在JDOM的官方网站http://www.jdom.org/dist/binary/ 下载JDOM的jar包。
  5. 下载完毕后,将其解压缩,解压缩后的"jdom.jar"文件即JDOM的jar包。
  6. 在已经建立好的Eclipse工程项目中,导入jdom.jar包。鼠标移至工程名"JDOMDemo"上,单击鼠标右键,在弹出菜单中单击"Properties"菜单项。
  7. 在出现的"Properties for JDOMDemo"窗口中,选择"Java Build Path"选项,再在右边选择"Libraries"标签,并在其窗口中单击"Add External JARs…"按钮(添加Eclipse外部jar包。
  8. 在出现的JAR Selection窗口中,选择之前下载好的"jdom.jar"文件,并单击"打开"按钮,如图22-13所示。
  9. 完成以上的几步后,会在"Libraries"标签窗口中发现多出了jdom一项,就说明导入成功了,并点击"OK"按钮,如图22-14所示。
  10. 在工程项目中添加生成XML文档的类CreateXML。
  11. 在代码编辑窗口中编写代码,用于生成XML文档。

代码22-7   使用JDOM生成XML文档CreateXML.java

import java.io.*;
import java.util.*;
import org.jdom.*;
import org.jdom.input.*;
import org.jdom.output.*;


public class CreateXML
    //声明XML中所有的元素
    Element customer,name,age,sex,address,street,city,district;
    public CreateXML()
        //创建customer元素,并设置为XML文档的根节点
        customer = new Element("customer");
        Document myDocument = new Document(customer);
        //创建XML文档中的其他元素,并初始化元素名
        name = new Element("name");
        age = new Element("age");
        sex = new Element("sex");
        address = new Element("address");
        street = new Element("street");
        city = new Element("city");
        district = new Element("district");
        //给XML文档中的每一个元素添加内容值
        name.addContent("Wang Xiao Yue");
        age.addContent("24");
        sex.addContent("male");
        street.addContent("No.1 East Rood,ShangDi");
        district.addContent("Hai Dian");
        city.addContent("Bei Jing");
        //将street、district和city元素作为子元素,添加到address元素中
        address.addContent(street);
        address.addContent(district);
        address.addContent(city);
        //将address元素作为子元素,添加到customer根元素中
        customer.addContent(name);
        customer.addContent(age);
        customer.addContent(sex);
        customer.addContent(address);
        //创建XML文件输出流
        XMLOutputter fmt = new XMLOutputter();
        //创建文件输出流
        FileWriter writer = new FileWriter("c:\\customer.xml");
        //设置所创建的XML文档的格式
        Format f = Format.getPrettyFormat();
        fmt.setFormat(f);
        //将生成的XML文档写入到"c:\customer.xml"文件中
        fmt.output(myDocument, writer);
        writer.close();
    catch (Exception e) {
        e.printStackTrace();
    }

    public static void main(String[] args)
        // TODO Auto-generated method stub
        CreateXML createXML = new CreateXML();

程序运行后,会在“C:\”目录下生成 “customer.xml”文件。