XML的四种解析方式之JDOM&DOM4J

本文介绍并演示了如何使用JDOM和DOM4J这两种流行的Java库来操作XML文件,包括创建、读取和输出XML文档的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JDOM

所谓的JDOM=DOM的可修改性+SAX的文件读取性。JDOM本身是一个免费的开源组件,可以直接进行下载。JDOM是使用Java语言编写的用于读、写、操作XML的一套组件。可以直接从http://www.jdom.org/上下载JDOM的开发包。


利用JDOM写文件的代码如下所示:(WriteXML.java的内容)

package org.lxh.xml.jdom;

import java.io.*;

import org.jdom.*;

import org.jdom.output.*;

public class WriterXML throws Exception {

    public static void main(String args[]){

        Element addresslist = new Element("addresslist");

        Element linkman = new Element("linkman");

        Element name = new Element("name");

        Element email = new Element("email");

        Attribute id = new Attribute("id","lxh");

        Document doc = new Document(addresslist);  //定义Document对象。

        name.setText("李兴华");

        name.setAttribute(id);  //将属性设置到元素之中。

        email.setText("mldnqa@163.com");

        linkman.addContent(name);   //设置关系。

        linkman.addContent(email);

        addresslist.addContent(linkman);

        XMLOutputter out = new XMLOutputter();

        out.setFormat(out.getFormat().setEncoding("GBK")); //表示的是设置编码。

        out.output(doc,new FileOutputStream(new 

        File("D:" + File.separator + "address.xml")));

    }

}

执行程序后,产生的address.xml中的内容如下所示:

 

用浏览器打开此XML文件的内容如下所示:

 

利用JDOM读取文件的内容如下所示:(ReadXML.java)

package org.lxh.xml.jdom;

import java.io.*;

import java.util.*;

import org.jdom.*;

import org.jdom.input.*;

public class ReadXML {

       public static void main(String args[]) throws Exception {

       SAXBuilder builder = new SAXBuilder();

       Document read_doc = builder.build(new File("D:" + File.separator + "address.xml"));

       Element root = read_doc.getRootElment(); //取得根

       List list = root.getChildren("linkman");

       for(int x=0;x<list.size();x++){

           Element e = (Element) list.get(x);

           String name = e.getChildText("name");

           String id = e.getChild("name").getAttribute("id").getValue();

           String email = e.getChildText("email");

           System.out.println("----------- 联系人 -----------");

           System.out.println("姓名:" + name + ",编号:" + id);

           System.out.println("EMAIL:" + email);

           System.out.println("------------------------------");

           System.out.priintln();

       }

   }

}

执行此段代码的结果如下所示:


小结:使用JDOM可以方便的实现XML文件的读取和输出。 JDOM=SAX+DOM。

DOM4J

DOM4J也是一组XML操作的组件包,主要用来读写XML文件,由于DOM4J性能优异、功能强大、易用性等特点所以现在已经被广泛的应用开来,例如:Hibernate、Spring框架中都使用了DOM4J进行XML的解析操作,如果要想取得DOM4J的开发包,可以直接登录SourceForge的首页(http://sourceforge.net/projects/dom4j/files/)下载。

 

通过DOM4J生成XML文件。【首先将DOM4J的开发包配置到classpath之中。】

Document对象创建的时候使用DocumentHelper这个类来完成。

在Dom4J之中输出操作靠的是OutputFormat类来完成。

如果现在要想输出则可以使用XMLWriter。

 

DOM4JWriter.java的内容如下所示:

package org.skewrain.xml.dom4j;

import java.io.*;

import org.dom4j.*;

import org.dom4j.io.*;

public class DOM4JWriter {

    public static void main(String args[]) throws Exception{

       Document doc = DocumentHelper.createDocument();

       Element addresslist = doc.addElement("addresslist");

       Element linkman = addresslist.addElement("linkman");

       Element name = linkman.addElement("name");

       Element email = linkman.addElement("email");

       name.setText("李兴华");

       email.setText("email");

       OutputFormat format = OutputFormat.createPrettyPrint();

       format.setEncoding("GBK");

 XMLWriter wirter = new XMLWriter(new FileOutputStream(new File("d:" + File.separator + "address.xml") ),format);

       writer.wirte(doc);  //进行输出

       writer.close() ;

    }

}

生成的XML文件如下所示:


DOM4J.java的代码内容如下所示:

package org.lxh.xml.dom4j;

import java.io.*;

import java.util.*;

import org.dom4j.*;

import org.dom4j.io.*;

public class DOM4JReader {

    public static void main(String args[]) throws Exception{

       File file = new File("d:" + File.separator + "output.xml");

       SAXReader reader = new SAXReader();

       Document doc = reader.read(file);  //读取XML文件

       Element root = doc.getRootElement();//取得根节点

       Iterator iter = root.elementIterator();

       while(iter.hasNext()){

          Element linkman = (Element)iter.next();

          System.out.println("姓名:" + linkman.elementText("name"));

          System.out.println("邮箱:" + linkman.elementText("email"));

       }

    }

}

执行代码的结果如下所示:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值