摘要:XML具有開放性、自描述性和平臺無關性,被稱作“Web上的ASCI碼”,近來己成為科學與業務應用中數據表示的標準,以及應用間數據交換的標準。因此,將XML有效地運用在電子政務框架體系的各個層次當中,可以為目前電子政務中面臨的資源共享、安全控制、業務協同和業務集成等系列核心問題提供有效的解決手段。本文研究了XML技術在數據交換中的具體應用方法,并采用ASP+XML技術對系統的關鍵部分進行了實現。
關鍵詞:XML;數據交換
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2008)17-21543-03
1 引言
隨著技術的迅猛發展,現代計算機網絡技術和科學管理方法已經運用在當今社會的各個方面,成為了當今的熱點話題。各級政府和部門都在著手實施建立自己的電子政務系統,對提升地方政府部門向社會服務的手段和能力,提高機構的內部業務處理的效率,提高對外服務的規范性有著特殊的意義。但是,由于政府各部門同構或異構平臺之間的數據交換沒有統一的格式,造成信息共享困難,比如部門之間的信息交換由于系統的不同而變的困難,新老系統更替時數據移植等等問題使得電子政務系統很難發揮它的最大作用,因此,我們在這里引入XML的數據交換技術,通過該技術實現不同系統之間的數據交流,解決信息孤島問題。
2 相關技術
2.1 XML概述
XML(EXTENSIBLE MARKUPL ANGUAGE)是一種元語言,它是用來描述其它語言的語言,允許你設計自己的標識,作為SGML(STANDARDGENERALIZED MARKUP LANGUAGE一標準通用標識語言)的一個子集。XML繼承了SGML的可擴展性,結構性及可校驗性,拋棄了其繁復而保持了強大功能,并克服了HTML缺乏伸縮性與靈活性的缺點。其主要優點如下所述:1)數據可以 被XML唯一的標識;2)XML數據一旦建立,它就能被發送到其它應用程序或中間服務器做進一步處理,或者給桌面瀏覽器顯示;3)XML能使不同來源的數據很容易組織起來;4)XML擴展性和靈活性允許它描述不同種類的應用程序中的數據。同時XML數據是自我描述的,資料不需要有內部描述就能被交換或處理;5)XML格式的數據被發送到客戶后,客戶可以用應用程序自動解析數據,并對數據進行自動編輯和處理;6)XML資料發送到桌面瀏覽器后, 能夠用多種方式顯示;7)通過XML,數據可以粒狀的更新;8)XML壓縮性能很好;9)XML使全球范圍內公認的數據描述標準。正是這些優點,使得XML得到廣泛應用,尤其是在需要信息交換的地方,使用XML 能做到事半功倍的效果。目前,XML在網絡上以被廣泛的用于數據描述與交換。用XML定義的報文不但計算機容易解析數據,人工讀取分析數據也很簡單。客戶端接收到XML報文后的處理方式就顯得非常靈活。另外用XML和XML模式定義報文,就不像傳統的EDI那樣經過兩層報文(平面檔和報文)格式轉換,使整個交換過程簡單明了。但是采用XML定義報文標準最大的好處就是維護容易, 由于XML文件結構非常好,維護后的文檔很容易讓人理解,這要比傳統EDI先進很多。
2.2 數據交換的概念
數據交換是指通過使用特殊的設備如磁盤,網絡等媒介在不同的硬件平臺、操作系統、應用軟件之間的數據移動過程。數據交換是實現數據共享的一種技術,因此通過數據交換,實現各系統間的數據共享、互聯互通、業務協同是解決目前“信息孤島”現象的關鍵途徑,這也是本文要研究的主要內容。
3 基于XML的數據交換的研究
3.1 工作原理
基于XML的數據交換中心為Internet上的電子政務信息資源整合,工作流集成和業務協作提供數據系統方面的支持。它的工作原理如下:假設部門GA有格式為A的數據集DATA(A,A),部門GB有格式為B的數據集DATA(B,B),GA不了解GB的格式,GB不了解GA的格式,現在雙方要進行數據交換,即將DATA(A,A)通過操作f(A->B)轉換為DATA(A,B),將DATA(B,B)通過操作f(B->A)轉換為DATA(B,A),由于對于f(A->B)和f(B->A)的具體操作雙方均不了解,無法進行正常的數據交換。而作為數據交換平臺,則執行下面的功能:(1)確定 一個普遍的數據標準X,作為數據轉換中的標準數據格式;(2)接受GA,GB關于格式A,B 的說明和登記,并建立對應的格式說明文檔集DA和DB;(3)處理DA和DB,將其與格式X比較,推導出轉換函數f(A->X),f(X->A), f(B->X)及f(X->B);(4)接受來自GA的數據集合DATA(A,A),利用f(A->X)得出標準數據集合DATA(A,X);(5)利用f(X->B)將DATA(A,X)轉換成符合B格式的數據DATA(A,B);反之亦然。系統結構可以如下圖表示:
3.2 具體實現步驟
首先客戶端構造一個XMLDOM對象,作為發送XML數據的載體,然后客戶端創建一個XMLHTTP對象,該對象包括多種方法和屬性,可以發送XML數據到服務器上的應用程序(如.NET頁面),同時準備接收響應信息。客戶端將XML數據包轉載到XMLHTTP對象上并發送給.NET頁面,服務端執行.NET,并創建一個服務器端XMLDOM對象來接收XML數據。.NET把數據包裝載到服務器端的XMLDOM對象上并對數據進行必要的處理,同時返回確認消息,客戶端接收響應消息,執行下一步操作。
3.2.1 客戶端設計
客戶端的首要任務是構造XML數據包,構造的方式有很多種。下面是用ASP.NET動態生成的一個XML文檔的一個簡單案例,該案例采用SAX(Simple Application for XML)接口方式生成XML文檔,從第一個節點開始一個一個節點逐步添加:
protected void Button1_Click(object sender, EventArgs e)
{ if (Session[\"nCounter\"] == 1)
{Session[\"nCounter\"] = (int)0;}
else{Session[\"nCounter\"] = (int)Session[\"nCounter\"] + 1;}
int nCounter = (int)Session[\"nCounter\"];
XmlTextWriter writer = new XmlTextWriter(\"Record.xml\", 1);
writer.WriteStartDocument();//輸出XML生命,即xmlversion=1.0
writer.WriteStartElement(\"forms\");//輸出節點元素
writer.WriteStartElement(\"form\");
writer.WriteAttributeString(\"ID\", nCounter.ToString());//輸出節點屬性
writer.WriteStartElement(\"姓名\");
writer.WriteString(name.Text);
writer.WriteEndElement();
writer.WriteStartElement(\"愛好\");
writer.WriteString(hobby.Text);
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();
}
頁面表單如上圖,當按圖填好數據時,單擊“確定”按鈕,即可生成Record.xml文檔保存頁面數據。這里使用了session對象根據單擊按鈕的次數來確定form的id屬性值。第一次點擊生成的文檔如下:
<?xml version=\"1.0\" ?>
- <forms>
- <form ID=\"0\">
<姓名>李文翔</姓名>
<愛好>計算機</愛好>
</form>
</forms>
3.2.2 XML的傳送
XML數據包構造完畢之后就可以利用HTTPRequest對象把數據包發送給服務器。MSXML中提供了Microsoft.XMLHTTP對象,能夠完成從數據包到Request對象的轉換以及發送任務。可以采用如下方式:
Set poster=Server.CreatcObject(\"Microsoft.XMLHTTP\") //創建HTTPRequest對象
poster.open http-method,url,async,userID,password
//對Request對象初始化,http-method指通信方式,如get或post;url指接收XML的服務器地址;async一個布爾標識符,指同步還是異步發送;userid,password分別是用戶名和密碼,用于服務器身份驗證。
poster.send XML-data //發送XML數據
3.2.3 服務器端設計
服務器在接收到客戶機發送過來的數據包后,會馬上處理數據。服務器先創建一個XMLDOM對象,然后將Request對象中的數據載入,并通過XMLDOM對象開始訪問XML數據。一個簡單的例子如下:
Set docReceived=CreateObject(\"Microsoft.XMLDOM\")
docReceived.async=False
docReceived.load Request
Set root Node=docReceived.documentElement
Set nodeCustomer=docReceived.selectSingleNode(\"http://customer\")
customerID=nodeCustomer.firstChild.nodevalue……
4 小結
本文探討了基于XML的數據交換系統模型。XML作為一種可擴展標記語言,其自描述性使得XML本身非常適用于異構應用間的數據交換,而且這種交換不以預先規定的數據結構定義為前提,因此具備很強的開放性和廣闊的應用前景,而現有的幾乎所有大型應用系統都是和數據庫相關聯的,所以以XML中性載體進行數據交換和信息共享必然要和數據庫相聯系,同時,基于XML的數據交換,實現數據庫的XML數據雙向存取,才能將XML數據同具體應用程序集成,進而使之同現有的業務規則相結合,最后真正實現基于XML的分布式數據交換與信息共享。
參考文獻:
[1] 王超,張鵬 ASP.NET/XML深入編程技術 北京希望電子出版社,2002.
[2] Benoit Marchal.楊洪濤,顧雷,鄭震坤 譯.XML示例程序導學(第二版) 清華大學出版社.
[3] 陳會安.XML網頁制作徹底研究.中國鐵道出版社,2003.
[4] John Beresniewicz.XML Basics for Data Exchange,2003.
[5] W3C.Extensible Markup Language(XML) ,2002.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文