一、 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 |
|
TEL |
varchar(15) |
NOT NULL |
往數據庫中輸入以下幾條記錄:
Name |
ID |
Company |
|
劉氏 |
001 |
公司1 |
|
蔣氏 |
002 |
公司2 |
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 的桌面應用程序
採用這種方法主要有兩個優點,首先,你可以以平臺和語言獨立的方式來操作數據,其次,不需要編程你就可以實現對同樣數據的不同的視圖表示。