Java与XML(二):使用Dom4j 操作 XML 文件
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是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...
DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...
DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件
在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...
这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者。 首先,让我们深入了解一下DOM4J的核心概念和特性: 1. **Document对象**:DOM4J中的Document对象代表整个XML文档。...
DOM4J是一个强大的Java XML API,它提供了灵活且高效的API来处理XML文档。在这个压缩包中,你获得了DOM4J的源码,这对于理解其内部工作原理、调试问题或进行定制化开发非常有帮助。 DOM4J的核心概念主要围绕以下几...
DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而直观的方式来解析、创建、修改和操作XML数据。在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你...
本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...
在本教程中,我们将深入探讨如何使用DOM4J解析XML配置文件,并模拟处理`web.xml`中的`url-pattern`元素。 首先,让我们了解DOM4J的基本概念。DOM4J是一个基于Java的DOM模型的XML库,它扩展了标准的DOM API,增加了...
- **dom4j+jaxen操作XML**:首先使用dom4j解析XML,然后通过jaxen创建XPath对象并执行查询。查询结果可以是元素、属性或其他XML节点,根据需要进行进一步处理。 例如,以下代码展示了如何使用dom4j和jaxen解析XML...
在该程序中,开发者首先会使用DOM4j解析XML文件,将XML数据结构转换为Java对象或数据结构。然后,利用Apache POI创建一个新的Excel工作簿,根据XML数据创建工作表、行和单元格,并填充相应的值。此外,可能还会涉及...
- **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...
5. **DOM4J与JAXB(Java Architecture for XML Binding)对比**:虽然两者都可以处理XML,但DOM4J更侧重于底层的XML操作,而JAXB则用于将Java对象和XML之间进行自动转换,更适用于对象和XML映射的需求。 6. **示例...
标题中的“j2ee11:xml02:dom4j解析”指的是在J2EE 11(Java Enterprise Edition 11)环境下,对XML文档进行解析时使用了DOM4J库。DOM4J是一个Java库,它提供了丰富的API来处理XML、XPath和Java集合框架的集成。在...
DOM4J是一个非常流行的Java XML API,它扩展了DOM,提供了更方便的操作XML的功能。DOM4J不仅支持DOM,还支持SAX和STAX解析。 读取XML文件: ```java import org.dom4j.DocumentHelper; import org.dom4j.Document; ...
DOM4J是Java环境中一个强大、灵活的XML处理库,它提供了XML的读取、写入、解析和操作的能力。本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解...
Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...
Java 解析 XML 并导入数据库(DOM4J) ...本例展示了如何使用 Java 语言和 DOM4J 库来解析 XML 文件并将其导入到数据库中。该示例代码提供了一个基本的框架,用于开发 XML 文件导入数据库的应用程序。
本笔记将深入探讨如何使用DOM(文档对象模型)和DOM4J库来创建XML文档。 一、DOM解析器 DOM是W3C推荐的一种XML解析标准,它将整个XML文档加载到内存中,形成一棵树形结构,称为DOM树。通过DOM,我们可以方便地访问...