應用JDOM處理數據庫到XML轉換的JSP實現

 一、 JDOM 介紹

我們知道 DOM 是用於與平臺和語言無關的方式表示 XML 文檔的官方 W3C 標準,利用 DOM SAX A PI 可以解析和處理 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

[email protected]

蔣氏

002

公司2

[email protected]

 

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 的桌面應用程序

採用這種方法主要有兩個優點,首先,你可以以平臺和語言獨立的方式來操作數據,其次,不需要編程你就可以實現對同樣數據的不同的視圖表示。

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章