一、 JDOM 介绍

我们知道 DOM 是用于与平台和语言无关的方式表示 XML 文档的官方 W3C 标准,利用 DOM 和 SAX API 可以解析和处理 XML 文档。这里我们介绍的 JDOM 是基于树操作的纯 JAVA API ,应该说它提供的是一套用于解析、创建、处理和实现 XML 的解决方案。这些 API 比 DOM 和 SAX API 提供的方法更为直观,对于有 JAVA 经验的程序员将会发现 JDOM 非常容易掌握。 JDOM 处理 XML 的方式比 DOM 容易的多,并且它的功能比使用 SAX 更加强大。

JDOM 的内部逻辑结构基本上与 DOM 的相同,比如具有 Document 、 Element 、 Comment 等文档节点类型,其中每一个 JDOM 文档必须有一个 Document 节点,并且为节点树的根节点。该根节点可以有子节点或者叶子节点如 Comment 、 Text 等。 JDOM 文档中的每一个节点类型均对应格式良好的 XML 文当中的没一个元素。这也就为我们利用 JDOM 转换数据库到 XML 文档提供了可操作的依据。

JDOM 的优点:

由 JDOM 的文档声明我们将会很明显的看出应用 JDOM 的优势所在。 JDOM 文档声明如下“ JDOM 引用了 20/80 原则,即使用 20% 的精力解决 80% 的 JAVA/XML 问题”。

●    JDOM 是用 JAVA 开发并为 JAVA 提供服务的,它沿用了 JAVA 代码的规范和类库;

●    在众多编程语言中, JAVA 是使用 XML 的优秀平台, XML 又是 JAVA 应用的优秀数据表示方法。 JDOM API 是纯 JAVA API 对于 JAVA 开发人员来说更容易上手;

●    JDOM API 比 DOM 所提供的方法更为直观,同时简化了与 XML 的交互。比使用 DOM 更快。

org.jdom 是用于 JAVA API 操作的 JDOM 工具包。

在 org.jdom 中,提供了 Document 、 Element 、 Comment 、 DocType 、 Attribute 、 Text 等存 JAVA 类,这些类均是访问和操作 JDOM 文档所必须的。我们可以利用这些类创建、遍历、修改 JDOM 文档。

在 org.jdom.output 中,提供了 DOMOutputter 、 XMLOutputter ,用于处理 JDOM 树的 DOM 树形式、 XML 文档形式输出、打印等。

二、环境配置

在我的 WINDOWS2000 系统平台上采用 TOMCAT4.1.18 、 JDK1.4.0_02 作为开发和测试平台。

通过“我的电脑”的“高级”属性添加如下两个环境设置 CLASSPATH 设置为:“ .;c:\j2sdk1.4.0_02\lib\dt.jar;c:\j2sdk1.4.0_02\lib\tools.jar; ”。 PATH 设置为“ .;c:\j2sdk1.4.0_02\bin; ”。

SQL SERVER JDBC 驱动: mssqlserver.jar 放入 TOMCAT 的 LIB 目录下。

三、获得与安装 JDOM

由于目前 JDOM 并没有包含在 SUN 的 JDK 中(我想不久的将来 JDOM 必然会成为 SUN JDK 的一部分),我们必须手工下载与设置 JDOM 的环境。

在 http://www.jdom.org 可以下载 JDOM 的最新版本。这里下载的是 JDOM beta8 。下载 jdom-b8.zip 后解压缩, JDOM 的 jar 文件就是 build 目录下的文件 jdom.jar ,将上述文件拷贝到 J2SDK1.4.0_02 目录下的 jre/lib/ext 目录下。

四、利用 JDOM 实现 SQL SERVER 数据库到 XML 的转换

1 、数据库、表的创建

这里应用一个转换顾客信息的例子——“顾客基本信息”。我们是把数据放置于 MICROSOFT SQL SERVER 2000 数据库中,然后运用 JSP 和 JDOM 技术动态生成 XML 实例文档。

我们事先 Microsoft SQL Server 数据库 CUSTOM 中创建了一个数据表 --CUSTOM ,其数据结构如下表所示:

字段名

注释

类型

是否为空

Name

姓名

varchar(12)

NOT NULL

ID

ID

int

NOT NULL

Company

公司

varchar(30)

NOT NULL

Email

TEL

varchar(15)

NOT NULL

往数据库中输入以下几条记录:

Name

ID

Company

Email

刘氏

001

公司1

liu@yantai.com

蒋氏

002

公司2

jiang@yantai.net

2 、数据源设置

数据源( ODBC Source )实际上就是定义数据的来源。数据源的设置方法是: [ 开始 ]- 〉 [ 设置 ]- 〉 [ 控制面板 ]- 〉 [ 管理工具 ]- 〉 [ 数据源 (odbc)]- 〉 [System DSN]->[add]->[SQL Server] ,分别配置服务器名( CUSTOM 所在服务器)、数据库名( CUSTOM )、数据源名称(此处定为 DB_CUSTOM )、用户名( lgz )、用户口令(空),数据源就配置好了。

 

3 、代码的编写

下面开始我们的编写 JSP 代码转换工作,代码将通过调用 JDOM 动态生成 XML 结构,然后借助 JDBC 访问 SQL SERVER 数据库动态填充 XML 内容。

<%@page contentType="text/html;charset=GBK"%>

<HTML>

<HEAD>

<TITLE>用JDOM实现数据库到XML的转换</TITLE>

</HEAD>

<BODY>

<%@page import="org.jdom.*"%>

<%@page import="java.*"%>

<%

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();  

String url="jdbc:microsoft:sqlserver://10.40.14.54:1433;DatabaseName=DB_CUSTOM";

//载入jdbc odbc的驱动程序

String user="lgz";

String password="lgz";

Connection conn= DriverManager.getConnection(url,user,password);   //连接数据库

Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  

//创建一个statement

String sql="select * from client";   //定义查询的SQL语句

ResultSet rs=stmt.executeQuery(sql);   //执行查询

Document document=new Document(new Element("联系人列表"));//创建文档

ResultSetMetaData rsmd = rs.getMetaData();  //获取字段名

int numberOfColumns = rsmd.getColumnCount(); //获取字段数

 int i=0;

 while(rs.next()){ //将查询结果取出                       

    Element element0=new Element("联系人");  //创建元素 生成JDOM树

    document.getRootElement().addContent(element0);

    for (i=1; i<=numberOfColumns;i++)

 {   String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"gb2312"); //代码转换

    Element element=new Element(rsmd.getColumnName(i)).setText(date);

element0.addContent(element);

 }  

  }

 rs.close();                            //关闭结果集

 stmt.close();                               //关闭statement

conn.close();                           //关闭连接

XMLOutputter outp = new XMLOutputter();

outp.output(document, new FileOutputStream("d:\\data.xml")); //输出XML文档

out.print("XML 文档生成完毕!");

%>

<a href="file:///d|/data.xml">点击打开产生的XML文档 </a>

</BODY>

</HTML>

4 、程序的运行

通过浏览器的 8080 端口运行该 JSP ,将产生预期的 xml 文件。

五、应用分析

XML 作为数据交换的标准,得到了越来越广泛的应用。这篇文章阐明了数据库到 XML 转换的基本方法,从而使各异构平台以及各种格式的数据进行数据交换成为可能。当我们能够把原始的数据转化为 XML 格式化的形式,就能够以丰富的 HTML 的格式表示出来。这里列举两个方面的应用:

1 、   XML 应用服务器:

XML 应用服务器实际上是支持 XML 的 Web 应用服务器,它们通常是模板驱动的,通过在一个剧本语言中嵌入使用 SQL 语句来提取数据并动态构建 XML 文档。

2 、 基于 XML 的桌面应用

我们知道通过 XSL 可以把相同的数据以不同的数据形式提交给终端客户,一个 XSL 文件描述了数据的显示方式,你可以把许多 XSL 和同一个 XML 文档相连来提供不同的基于 HTML 的表示,这样事实上,我们就可以建立基于 XML 的桌面应用程序

采用这种方法主要有两个优点,首先,你可以以平台和语言独立的方式来操作数据,其次,不需要编程你就可以实现对同样数据的不同的视图表示。

转自:动态网站制作指南 | www.knowsky.com