Java与XML(二):使用Dom4j 操作 XML 文件

转载 2013年12月05日 13:12:06

1. Dom4j 介绍

Dom4j是开放源代码的解析XML文件的框架,它拥有本地的XPath支持,但是不支持使用XPath选择节点

虽然 DOM4J 代表了完全独立的开发结果,但最初,它是JDOM 的一种智能分支。它合并了许多超出基本 XML文档表示的功能,包括集成的 XPath支持、XML Schema 支持 以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J  API 和标准 DOM 接口具有并行访问功能。从2000下半年开始,它就一直处于开发 之中。为支持所有这些功能,DOM4J 使用接口和抽象基本类方法。DOM4J  大量使用了  API 中的  Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直 接的编码方法。直接好处是,虽然  DOM4J 付出了更复杂的  API 的代价,但是它提供了比JDOM 大得多的灵活性。 在添加灵活性、XPath 集成和对大文档处理的目标时,DOM4J 的目标与 JDOM 是一样 的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案, 实现在本质上处理所有Java/XML问题的目标。在完成该目标时, 它比JDOM 更少强调防止 不正确的应用程序行为。 DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使 用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的  Java 软件都在 使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM也在用DOM4J。

主要的方法:

  • createDocument
  • addElement
  • setText

2. 采用Dom4j生成XML文件

测试小实例:用Dom4j创建一个XML文件

import java.io.FileWriter;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

/**
 * @Author:胡家威  
 * @CreateTime:2011-9-23 上午11:14:11
 * @Description:
 */


public class dom4jXML {

  public static void main(String[] args) {
    dom4jXML dom4j = new dom4jXML();
    dom4j.generateDocument();
  }

  public void generateDocument(){
    Document document = DocumentHelper.createDocument();
    Element booksElement = document.addElement("books");
    booksElement.addComment("A Java Book");
    Element bookElement = booksElement.addElement("book");
    bookElement.addAttribute("author", "yinger");
    Element nameElement = bookElement.addElement("name");
    nameElement.setText("Java NoteBook");
    Element priceElement = bookElement.addElement("price");
    priceElement.setText("10.00 RMB");

    try {
      XMLWriter outWriter = new XMLWriter(new FileWriter("books.xml"));
      outWriter.write(document);
      outWriter.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

}

生成的文件在IE中的显示效果:

3. 实例:将数据库中表的内容导出到XML文件中

import java.io.FileWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

/**
 * @Author:胡家威
 * @CreateTime:2011-9-23 上午11:39:14
 * @Description:将数据库中的数据存储到XML文件中
 */


public class DBXML {

  public static void main(String[] args) {
    DBXML dbxml = new DBXML();
    dbxml.Db2XML2();
  }

  /**
   * 这种方法需要知道数据库中每一列的名称
   */

  public boolean Db2XML() {
    try {
      Class.forName("org.gjt.mm.mysql.Driver").newInstance();
      String url = "jdbc:mysql://localhost/blog?user=root&password=root";
      Connection connection = DriverManager.getConnection(url);// 注意:connection是java.sql.Connection
      Statement statement = connection.createStatement();
      String sql = "select * from blog";
      ResultSet rs = statement.executeQuery(sql);

      Document document = DocumentHelper.createDocument();
      Element rootElement = document.addElement("blogs");

      while (rs.next()) {
        Element blogeElement = rootElement.addElement("blog");
        blogeElement.addAttribute("ID", rs.getString("id"));
        Element cidElement = blogeElement.addElement("categoryid");
        cidElement.setText(rs.getString("categoryid"));
        Element titleElement = blogeElement.addElement("title");
        titleElement.setText(rs.getString("title"));
        Element contentElement = blogeElement.addElement("content");
        contentElement.setText(rs.getString("content"));
        Element timeElement = blogeElement.addElement("createTime");
        timeElement.setText(rs.getString("created_time"));
      }
      rs.close();

      XMLWriter xmlWriter = new XMLWriter(new FileWriter("blogs.xml"));
      xmlWriter.write(document);
      xmlWriter.close();

      return true;
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
  }

  /**
   * 这种方法不需要,它利用了 ResultSetMetaData
   */

  public boolean Db2XML2() {
    try {
      Class.forName("org.gjt.mm.mysql.Driver").newInstance();
      String url = "jdbc:mysql://localhost/blog?user=root&password=root";
      Connection connection = DriverManager.getConnection(url);// 注意:connection是java.sql.Connection
      Statement statement = connection.createStatement();
      String sql = "select * from blog";
      ResultSet rs = statement.executeQuery(sql);
      ResultSetMetaData rsmd = rs.getMetaData();
      int cols = rsmd.getColumnCount();

      Document document = DocumentHelper.createDocument();
      Element rootElement = document.addElement("blogs");

      while (rs.next()) {
        Element blogeElement = rootElement.addElement("blog");
        for (int i= 1; i < cols; i++) {// 注意,这里i是从1开始的!
          Element element = blogeElement.addElement(rsmd.getColumnName(i));
          element.setText(rs.getString(i));
        }
      }
      rs.close();

      XMLWriter xmlWriter = new XMLWriter(new FileWriter("blogs2.xml"));
      xmlWriter.write(document);
      xmlWriter.close();

      return true;
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
  }

}

效果展示:blog表中的数据

第一种方式:id是属性

第二种方式:id是一个子元素节点

java 生成 解析XML 文件 Dom4J

首先先看一下我们的XML文档结构,一下的文档结构是由一对标签包含,其中一组包含了两个标签跟,其中可以看成是key, 可以看成是value。这样的话就可以通过的值来拿到的值。 0...
  • shasiqq
  • shasiqq
  • 2015年10月21日 14:21
  • 363

java 使用DOM4J对XML文件进行增删改查操作

源代码: DOM4j.javapackage com.zc.homeWork19;import java.io.FileWriter; import java.util.ArrayList; imp...

java中用dom4j对xml文件进行操作

dom4j的增删改查(简单例子) 1.dom4j的jar包: 在用dom4j之前需要先导入dom4j的jar包,我用的是dom4j-1.6.1这个版本的。 2.首先利用dom4j创建一个xml文件...

Java操作XML文件 dom4j 篇

转自:http://hi.baidu.com/joecom/item/28857808925a6beb359902de

java中用Dom4J来操作xml文件

java中用Dom4J来操作xml文件  * Dom4J的常用方法:  * Document  *  Element getRootElement() :获取根元...

Java操作XML文件 dom4j 篇

在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互。 今天就来讲一下Java 中使用dom4j来操作XML文件。 我们需要引入的包: /文件包  import...

java中用Dom4J来操作xml文件(删除和修改和添加)

java中用Dom4J来操作xml文件(删除和修改和添加) 1.1.1 功能分析 //3、修改某个元素节点的主体内容:信阳-->安阳 //6、删除指定元素节点:删除元素开封  ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java与XML(二):使用Dom4j 操作 XML 文件
举报原因:
原因补充:

(最多只允许输入30个字)