王 昕
[摘要]以數字化校園建設作為背景,基于XML在集成異構數據源、數據的多種顯示等方面的重要應用,探討數字化校園建設中的不同平臺/系統之間的數據交換及信息的處理和發布等方面的重要技術及解決方法。
[關鍵詞]校園網 XML 數據交換
中圖分類號:TP3文獻標識碼:A文章編號:1671-7597(2009)0420052-01
數據處理是數字化校園網建設的核心部分。在數字化校園網的建設中,可以用XML統一表示來自不同數據源的數據,來實現學校各部門之間以及部門內部各系統間的數據共享、數據交互。但是XML文檔本身只是一個文本文件,它需要能識別XML格式化信息的解析器來解析并提取其中的內容。
在J2EE架構中,有兩種基本方式對XML數據進行解析并讀入到某個對象模型中,它們是DOM方式和SAX方式。DOM和SAX是兩種最流行的應用于XML的編程API,這兩種技術的根本差別在于客戶應用程序得到XML文檔數據的方式不同。SAX是事件驅動模型,這就意味著解析器識別出文檔特性時,客戶應用程序不斷接到通知。相反地,DOM模型是基于對象的,整篇XML文檔作為分層次排列的對象來解析和存儲,客戶應用程序可以隨機訪問這些對象。
在應用程序的開發過程中,應用程序不是直接對XML文檔進行操作的,而是首先由XML解析器對XML文檔進行解析,然后,應用程序通過XML解析器所提供的DOM接口或SAX接口對解析結果進行操作,從而間接地實現了對XML文檔的訪問。
我們在進行數字化校園的系統開發時,根據具體的情況分別用到這兩種解析器,下面對這兩種解析器的解析步驟和相應的操作進行介紹。
一、基于DOM API的數據處理
(一)使用DOM解析XML文件
為了使用XML文件中的信息,必須解析文件以創建一個Document對象。在javax.xml.parsers中,jdkl.4提供的DoumentBuilder和DocumentBu
-ilderFactory組合可以對XML文件進行解析,轉換成DOM文檔。Document對象是一個接口,因而不能直接將它實例化;一般情況下,應用程序會相應使用一個工廠。
具體的解析步驟如下:
1.創建一個解析器工廠,以利用這個工廠來獲得一個具體的解析器對象。
2.創建DocumentBuilder對象,這個對象代表了具體的DOM解析器。
3.解析XML文件以創建Document對象。
這樣就創建了一個XML的DOM文檔樹,然后可以開始構建應用程序來對DOM的文檔樹進行訪問了。利用DOM,開發人員可以進行動態地創建 XML文檔、遍歷結構、添加、修改、刪除內容等操作。DOM面向對象的特性,使人們在處理和XML解析相關的事務時節省大量精力,是一種符合代碼重用思想的強有力的編程工具。
(二)基于DOM API的節點編輯
在對XML文檔進行解析并獲得XML文檔的Document對象后,就可以開始構建應用程序來對DOM的文檔樹進行訪問了。目前Sun公司推出的jdkl. 4測試版中的java API遵循了DOM level 2 Core推薦接口的語義說明,提供了相應的Java語言的實現。在rg. xml. dom中,jdkl. 4提供了Document,DocumentType,Node,NodeList,Element,Text等接口,這些接口均是訪問DOM文檔所必須的。我們可以利用這些接口創建、遍歷、修改DOM文檔。
二、基于事件的數據處理
(一)SAX解析步驟
SAX在讀取XML流的同時處理它們,而分析這個代碼片斷的SAX處理器一般情況下將產生以下事件:startDocument、endDocument、startElement、endElement和characters。SAX API允許開發人員捕捉這些事件并對它們做出反應。
SAX處理涉及以下幾步:
1.創建事件處理程序。
2.創建SAX解析器。
3.將事件處理程序分配給解析器。
4.解析文檔,同時向事件處理程序發送每個事件。
(二)事件驅動的文檔解析實例
SAX解析器對XML文檔進行解析,將要使用的部分數據提取到應用程序,為了保存數據以便其他程序能夠調用數據,我們可以采用Java提供的散列表類Hashtable來保存解析XML文件后的所有節點名字以及節點的數據值。哈希表HashTable是從Dictionary派生出來的,它具有一系列的關鍵字和數值,一個關鍵字對應一個數值,識別主要是通過對象的哈希代碼hashCode識別。
程序中使用Hashtable類存儲數據時,首先要用Hashtable()創建一個散列表對象,然后使用put()方法將數據填入該對象中,查詢數據可以使用get方法。
三、數據交換流程的設計
XML為在不同的數據庫之間傳遞信息提供了理想的機制。從本質上講,數據庫是專有的,即每個數據庫有不同的元素命名結構,不同的規格化級別,甚至描述枚舉信息的方法也不盡相同。利用DOM/SAX能夠簡化各種數據庫之間信息傳遞的方式。通過將DOM/SAX作為公共的傳輸機制,每個數據庫只需要以XML作為中介導入和導出即可。
用XML作為數據交換的中介,系統可以屏蔽掉后臺的多種數據源,用統一的XML文檔呈現給用戶。接收數據方根據數據XML文檔的類型可以對數據XML文檔進行任意的業務處理。在數字化校園建設中,為了使基于XML的業務數據交換成為可能,就必須實現數據庫的XML數據存取,并且將XML數據同應用程序集成,進而使之同現有的業務規則相結合,并且加以利用,從而完成學校各部門之間以及學校與教育主管部門之間的交換數據,實現教務數據的上傳下發,真正使教育信息化成為一體化應用,不再是信息孤島。
開發基于XML的動態應用(如動態數據交換、動態信息發布),就是要能從數據庫中取出需要交換的數據,并動態產生XML文檔在各個應用程序之間傳遞,不同應用系統中不同語言編寫的應用程序就可正確識別和解析文檔中的數據,實現數據的動態交換。
以上是在基于XML的數據交換技術在校園網中進行共享數據的一種解決思路,希望能夠拋磚引玉,尋求一種更好的解決方案。
參考文獻:
[1](美)Natanya Pitts,徐曉梅、龔志翔、王曉云等譯,XML技術內幕,北京:機械工業出版社,2002.
[2]章明、許青松、沈錫臣,基于XML的數據交換共享平臺模型,清華大學學報(自然科學版),2003.01.