隨筆-26  評論-13  文章-46  trackbacks-0

          一、JDOM介紹

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

          JDOM的內(nèi)部邏輯結(jié)構(gòu)基本上與DOM的相同,比如具有DocumentElementComment等文檔節(jié)點類型,其中每一個JDOM文檔必須有一個Document節(jié)點,并且為節(jié)點樹的根節(jié)點。該根節(jié)點可以有子節(jié)點或者葉子節(jié)點如CommentText等。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 APIDOM所提供的方法更為直觀,同時簡化了與XML的交互。比使用DOM更快。

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

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

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

          二、環(huán)境配置

          在我的WINDOWS2000系統(tǒng)平臺上采用TOMCAT4.1.18JDK1.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 放入TOMCATLIB目錄下。

          三、獲得與安裝JDOM

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

          http://www.jdom.org可以下載JDOM的最新版本。這里下載的是JDOM beta8。下載jdom-b8.zip后解壓縮,JDOMjar文件就是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ù)庫中,然后運用JSPJDOM技術(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ù)器實際上是支持XMLWeb應(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ù)的不同的視圖表示。

          轉(zhuǎn)自:IT知識庫 www.aspdao.com
          posted on 2005-06-23 17:54 似水流年 閱讀(239) 評論(0)  編輯  收藏 所屬分類: JSP/Servlet
          主站蜘蛛池模板: 大新县| 宜昌市| 太仓市| 城口县| 峨眉山市| 民和| 分宜县| 忻城县| 广水市| 勐海县| 普格县| 东莞市| 松溪县| 扎兰屯市| 河南省| 云和县| 昭通市| 乐陵市| 德惠市| 醴陵市| 彩票| 华容县| 同心县| 邵阳市| 麻栗坡县| 甘肃省| 丰镇市| 突泉县| 普兰店市| 丽水市| 绥棱县| 卓资县| 梅河口市| 安庆市| 麻城市| 广东省| 鄱阳县| 宁都县| 黄大仙区| 丘北县| 华蓥市|