0734w-月下竹音

          0734是來自家鄉(xiāng)的聲音

          常用鏈接

          統(tǒng)計

          最新評論

          (轉(zhuǎn))應(yīng)用JDOM處理數(shù)據(jù)庫到XML轉(zhuǎn)換的JSP實現(xiàn)

          一、 JDOM 介紹

          我們知道 DOM 是用于與平臺和語言無關(guān)的方式表示 XML 文檔的官方 W3C 標(biāo)準(zhǔn),利用 DOM SAX API 可以解析和處理 XML 文檔。這里我們介紹的 JDOM 是基于樹操作的純 JAVA API ,應(yīng)該說它提供的是一套用于解析、創(chuàng)建、處理和實現(xiàn) XML 的解決方案。這些 API DOM SAX API 提供的方法更為直觀,對于有 JAVA 經(jīng)驗的程序員將會發(fā)現(xiàn) JDOM 非常容易掌握。 JDOM 處理 XML 的方式比 DOM 容易的多,并且它的功能比使用 SAX 更加強大。

          JDOM 的內(nèi)部邏輯結(jié)構(gòu)基本上與 DOM 的相同,比如具有 Document Element Comment 等文檔節(jié)點類型,其中每一個 JDOM 文檔必須有一個 Document 節(jié)點,并且為節(jié)點樹的根節(jié)點。該根節(jié)點可以有子節(jié)點或者葉子節(jié)點如 Comment Text 等。 JDOM 文檔中的每一個節(jié)點類型均對應(yīng)格式良好的 XML 文當(dāng)中的沒一個元素。這也就為我們利用 JDOM 轉(zhuǎn)換數(shù)據(jù)庫到 XML 文檔提供了可操作的依據(jù)。

          JDOM 的優(yōu)點:

          JDOM 的文檔聲明我們將會很明顯的看出應(yīng)用 JDOM 的優(yōu)勢所在。 JDOM 文檔聲明如下“ JDOM 引用了 20/80 原則,即使用 20% 的精力解決 80% JAVA/XML 問題”。

          ?? JDOM 是用 JAVA 開發(fā)并為 JAVA 提供服務(wù)的,它沿用了 JAVA 代碼的規(guī)范和類庫;

          ?? 在眾多編程語言中, JAVA 是使用 XML 的優(yōu)秀平臺, XML 又是 JAVA 應(yīng)用的優(yōu)秀數(shù)據(jù)表示方法。 JDOM API 是純 JAVA API 對于 JAVA 開發(fā)人員來說更容易上手;

          ?? JDOM API DOM 所提供的方法更為直觀,同時簡化了與 XML 的交互。比使用 DOM 更快。

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

          org.jdom 中,提供了 Document Element Comment DocType Attribute Text 等存 JAVA 類,這些類均是訪問和操作 JDOM 文檔所必須的。我們可以利用這些類創(chuàng)建、遍歷、修改 JDOM 文檔。

          org.jdom.output 中,提供了 DOMOutputter XMLOutputter ,用于處理 JDOM 樹的 DOM 樹形式、 XML 文檔形式輸出、打印等。

          二、環(huán)境配置

          在我的 WINDOWS2000 系統(tǒng)平臺上采用 TOMCAT4.1.18 JDK1.4.0_02 作為開發(fā)和測試平臺。

          通過“我的電腦”的“高級”屬性添加如下兩個環(huán)境設(shè)置 CLASSPATH 設(shè)置為:“ .;c:\j2sdk1.4.0_02\lib\dt.jar;c:\j2sdk1.4.0_02\lib\tools.jar; ”。 PATH 設(shè)置為“ .;c:\j2sdk1.4.0_02\bin; ”。

          SQL SERVER JDBC 驅(qū)動: mssqlserver.jar 放入 TOMCAT LIB 目錄下。

          三、獲得與安裝 JDOM

          由于目前 JDOM 并沒有包含在 SUN JDK 中(我想不久的將來 JDOM 必然會成為 SUN JDK 的一部分),我們必須手工下載與設(shè)置 JDOM 的環(huán)境。

          http://www.jdom.org 可以下載 JDOM 的最新版本。這里下載的是 JDOM beta8 。下載 jdom-b8.zip 后解壓縮, JDOM jar 文件就是 build 目錄下的文件 jdom.jar ,將上述文件拷貝到 J2SDK1.4.0_02 目錄下的 jre/lib/ext 目錄下。

          四、利用 JDOM 實現(xiàn) SQL SERVER 數(shù)據(jù)庫到 XML 的轉(zhuǎn)換

          1 、數(shù)據(jù)庫、表的創(chuàng)建

          這里應(yīng)用一個轉(zhuǎn)換顧客信息的例子——“顧客基本信息”。我們是把數(shù)據(jù)放置于 MICROSOFT SQL SERVER 2000 數(shù)據(jù)庫中,然后運用 JSP JDOM 技術(shù)動態(tài)生成 XML 實例文檔。

          我們事先 Microsoft SQL Server 數(shù)據(jù)庫 CUSTOM 中創(chuàng)建了一個數(shù)據(jù)表 --CUSTOM ,其數(shù)據(jù)結(jié)構(gòu)如下表所示:

          字段名

          注釋

          類型

          是否為空

          Name

          姓名

          varchar(12)

          NOT NULL

          ID

          ID

          int

          NOT NULL

          Company

          公司

          varchar(30)

          NOT NULL

          Email

          TEL

          varchar(15)

          NOT NULL

          往數(shù)據(jù)庫中輸入以下幾條記錄:

          Name

          ID

          Company

          Email

          劉氏

          001

          公司1

          liu@yantai.com

          蔣氏

          002

          公司2

          jiang@yantai.net

          2 、數(shù)據(jù)源設(shè)置

          數(shù)據(jù)源( ODBC Source )實際上就是定義數(shù)據(jù)的來源。數(shù)據(jù)源的設(shè)置方法是: [ 開始 ]- [ 設(shè)置 ]- [ 控制面板 ]- [ 管理工具 ]- [ 數(shù)據(jù)源 (odbc)]- [System DSN]->[add]->[SQL Server] ,分別配置服務(wù)器名( CUSTOM 所在服務(wù)器)、數(shù)據(jù)庫名( CUSTOM )、數(shù)據(jù)源名稱(此處定為 DB_CUSTOM )、用戶名( lgz )、用戶口令(空),數(shù)據(jù)源就配置好了。

          ?

          3 、代碼的編寫

          下面開始我們的編寫 JSP 代碼轉(zhuǎn)換工作,代碼將通過調(diào)用 JDOM 動態(tài)生成 XML 結(jié)構(gòu),然后借助 JDBC 訪問 SQL SERVER 數(shù)據(jù)庫動態(tài)填充 XML 內(nèi)容。

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

          <HTML>

          <HEAD>

          <TITLE>用JDOM實現(xiàn)數(shù)據(jù)庫到XML的轉(zhuǎn)換</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的驅(qū)動程序

          String user="lgz";

          String password="lgz";

          Connection conn= DriverManager.getConnection(url,user,password);?? //連接數(shù)據(jù)庫

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

          //創(chuàng)建一個statement

          String sql="select * from client";?? //定義查詢的SQL語句

          ResultSet rs=stmt.executeQuery(sql);?? //執(zhí)行查詢

          Document document=new Document(new Element("聯(lián)系人列表"));//創(chuàng)建文檔

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

          int numberOfColumns = rsmd.getColumnCount(); //獲取字段數(shù)

          ?int i=0;

          ?while(rs.next()){ //將查詢結(jié)果取出???????????????????????

          ??? Element element0=new Element("聯(lián)系人");? //創(chuàng)建元素 生成JDOM樹

          ??? document.getRootElement().addContent(element0);

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

          ?{?? String date=new String(rs.getString(i).getBytes("ISO-8859-1"),"gb2312"); //代碼轉(zhuǎn)換

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

          element0.addContent(element);

          ?}??

          ? }

          ?rs.close();??????????????????????????? //關(guān)閉結(jié)果集

          ?stmt.close();?????????????????????????????? //關(guān)閉statement

          conn.close();?????????????????????????? //關(guān)閉連接

          XMLOutputter outp = new XMLOutputter();

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

          out.print("XML 文檔生成完畢!");

          %>

          <a href="file:///d|/data.xml">點擊打開產(chǎn)生的XML文檔 </a>

          </BODY>

          </HTML>

          4 、程序的運行

          通過瀏覽器的 8080 端口運行該 JSP ,將產(chǎn)生預(yù)期的 xml 文件。

          五、應(yīng)用分析

          XML 作為數(shù)據(jù)交換的標(biāo)準(zhǔn),得到了越來越廣泛的應(yīng)用。這篇文章闡明了數(shù)據(jù)庫到 XML 轉(zhuǎn)換的基本方法,從而使各異構(gòu)平臺以及各種格式的數(shù)據(jù)進行數(shù)據(jù)交換成為可能。當(dāng)我們能夠把原始的數(shù)據(jù)轉(zhuǎn)化為 XML 格式化的形式,就能夠以豐富的 HTML 的格式表示出來。這里列舉兩個方面的應(yīng)用:

          1 ? XML 應(yīng)用服務(wù)器:

          XML 應(yīng)用服務(wù)器實際上是支持 XML Web 應(yīng)用服務(wù)器,它們通常是模板驅(qū)動的,通過在一個劇本語言中嵌入使用 SQL 語句來提取數(shù)據(jù)并動態(tài)構(gòu)建 XML 文檔。

          2 基于 XML 的桌面應(yīng)用

          我們知道通過 XSL 可以把相同的數(shù)據(jù)以不同的數(shù)據(jù)形式提交給終端客戶,一個 XSL 文件描述了數(shù)據(jù)的顯示方式,你可以把許多 XSL 和同一個 XML 文檔相連來提供不同的基于 HTML 的表示,這樣事實上,我們就可以建立基于 XML 的桌面應(yīng)用程序

          采用這種方法主要有兩個優(yōu)點,首先,你可以以平臺和語言獨立的方式來操作數(shù)據(jù),其次,不需要編程你就可以實現(xiàn)對同樣數(shù)據(jù)的不同的視圖表示。

          posted on 2006-04-06 10:18 sparkwu 閱讀(518) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 华阴市| 华宁县| 焦作市| 鸡泽县| 芦溪县| 定日县| 浮山县| 东阿县| 临夏市| 孟连| 宁陕县| 连南| 周口市| 准格尔旗| 余干县| 无为县| 拜泉县| 井冈山市| 苏州市| 陈巴尔虎旗| 阳谷县| 嘉荫县| 五峰| 英德市| 同江市| 萨迦县| 南京市| 多伦县| 安阳市| 大洼县| 宝兴县| 南宫市| 宜丰县| 康定县| 东乌珠穆沁旗| 贵阳市| 额敏县| 寿阳县| 法库县| 青冈县| 无为县|