姜宇
摘 要:作為當今主流的Web開發技術,AJAX在電子政務信息系統中的廣泛應用,對于提高用戶體驗和政府辦公效率有其獨特的優勢。但其中基于XML進行的數據傳輸,由于需要DOM解析,導致占用系統資源較多,對于瀏覽器來說會導致文件解析資源消耗嚴重的問題。本文提出使用輕量級的JSON格式作為數據負載,摒棄了DOM對XML文件解析的復雜性,可大幅提高數據交換的速率和頁面呈現的實時性。
關鍵詞:AJAXJSONXML
中圖分類號:TM6 文獻標識碼:A 文章編號:1674-098X(2012)05(c)-0036-01
1 引言
隨著計算機技術和互聯網技術的迅猛發展,社會信息化程度的高低已經成為衡量一個國家綜合國力水平的重要標志之一。而政府機關為適應網絡信息社會的要求,更好地為國民經濟和社會發展服務,更需要加強各部門之間信息資源的共享,實現聯合辦公,提高行政效率,降低行政成本,加速信息的傳播,提高信息的使用價值[1]。這樣對電子政務信息系統中數據的傳輸效率提出了新的要求。
本文對XML和JSON進行了分析比較,提出了在AJAX環境中基于JSON的輕量級數據交換模式,對于提高政府部門辦公效率有著重要的意義。
2 AJAX簡介
AJAX是異步JS和XML的簡稱,是一種是用客戶端腳本并能與Web服務器交互的客戶端Web開發技術。其特點在于AJAX是基于客戶端的,并能夠以異步的方式與服務器交互。
3 從XML到JSON
3.1 XML的局限性
XML——可擴展標記語言。它是一種格
式統一,跨平臺的語言。在數據傳送過程中,XML始終保留了諸如父/子關系這樣的數據結構。幾個應用程序可以共享和解析同一個XML文件,不必使用傳統的字符串解析或拆解過程[2]。因此在傳統WEB應用程序中,使用XML已經有效地成為客戶端與服務器之間數據交換的負載格式。隨著WEB2.0的發展,AJAX技術逐漸興起,在其構建的WEB程序中,XML的應用具有很大的局限性。
由于AJAX在瀏覽器與WEB服務器之間使用異步數據傳輸HTTP請求以達到使網頁從服務器請求少量的信息,在不重載整個頁面的情況下與WEB服務器交換數據,因此AJAX程序中的更新和導航序列是在客戶端/服務器環境之外完成的。信息被瀏覽器接收到后,需要整合到HTML頁面的整體布局中,這個局部刷新過程不易消耗時間過久,否則會導致用戶體驗下降。盡管腳本語言和插件支持已使大多數主流瀏覽器的功能得到了強化,但許多編程任務依然難于開展[3],這是因為將XML作為信息交換的載體,處理操縱文本時通常是使用DOM來實現的。
在客戶端接收從服務器傳輸過來的信息代碼時,首先需要對服務器代碼進行解析。如果服務器代碼是用XML編碼的,就必須調用XML解析器,通常使用DOM解析內容。使用DOM時,將把所有的XML文檔信息都存于內存中。在信息量不是很大的時候,使用XML作為信息載體并無不妥。但隨著信息量的增多,DOM對XML的解析會出現明顯的復雜性,主要源于其基于函數的根,這使得對數據樹的簡單訪問和修改都需要進行無數次的方法調用,使用DOM進行解析時,為文檔的每個element、attribute和comment都創建一個對象,這樣在DOM機制中所運用大量對象的創建和銷毀,都導致其解析速度慢,效率低下。此外,DOM解析內存占用量過高,對大信息量文件來說幾乎是不可承受的。況且,DOM在各個瀏覽器中的實現細節不盡相同,編程模式極為復雜,跨瀏覽器兼容性出現問題的可能性極大[3]。因此,需要一種更為直觀的數據封裝格式,直接采用面向對象的語法來解析服務器數據。基于JSON的數據交換方式解決了這一問題。
3.2 JSON解決方案
JSON是一種輕量級的數據交換格式,易于閱讀和編寫,也易于機器解析和生成。它是基于純文本的數據格式,可以被用來傳輸簡單的諸如String,Number,Boolean等,也可以傳輸數組或者復雜的Object對象。JSON對象是一系列以逗號分隔的名稱/值對(name:value),最外面用一對花括號括起來。由此帶來的簡潔性是XML無法比擬的,在數據傳輸時,減少的數據量可以帶來性能上的提升,這是JSON的第一個優點。當JS解析和處理JSON時,就突出了其第二個優點。將JSON裝載到內存時,只需一個eval()調用。裝載后,就可以通過名稱直接訪問任何字段了。相對于DOM,極大地提高了效率。
下面針對XML和JSON的解析過程進行對比。
一個XML文件:
如果要使用JS解析XML就需要使用DOM并編寫JS代碼將文本變為一個JS對象。代碼如下:
if (window.ActiveXObject) {
xmlDoc = new ActiveXObject(''Microsoft.XMLDOM'');
xmlDoc.async = false;
xmlDoc.loadXML(xmlString);
}
這是一個JSON對象:{"city":"Chengdu","province":"Sichuan","coun":"China"}。
裝載JSON并調用字段,
var json= {"city":"Chengdu","pro":"Sichuan","coun":"China"};
var result=eval(‘(‘+json+));
alert(result.city);
這樣就可以通過JavaScript直接對JSON字符串進行解析并獲取對象信息了。
在AJAX應用中,JSON除了大幅提高解析速度以外,在以下方面也發揮了獨特的優勢地位:
(1)數據類型。
XML本身沒有數據類型概念,它通過Schema來定義數據類型。而JSON則提供數據類型的支持,并通過使用對象和數組可以表現結構化數據。
(2)表示數組。
在XML中,需要許多開始標記和結束標記,數組形式通常被表示為一個父元素包含數個相同的子元素。而JSON對數組是原生支持的。
(3)占用空間大小。
從表現形式來看,XML很明顯代碼臃腫,這主要源于XML的特性,每個元素必須要有開始和結束標簽。而JSON更加簡潔明了,相同的信息用JSON來表示可以節省更大的空間使用。在互聯網應用中,對于相同的信息量在相同帶寬環境下,JSON會以更小的體積更快速地發送。
4 結語
在AJAX構建的電子政務信息系統中,使用XML作為數據傳送的載體尤其局限性,JSON作為輕量級的數據交換格式,在AJAX應用中優勢明顯。本文從多角度對二者進行了比較和區別,使用JSON作為數據交換的載體,可以提高系統響應速度,降低等待時間,對于提高系統資源利用率有著很大的貢獻價值。
參考文獻
[1] 李昕.電子政務信息資源共享的保障研究.江西圖書館學刊,2009.
[2] 胡千里.比較XML與JSON在Web中的應用.信息技術.
[3] 胡曉鋒.JSON與XML在網絡數據傳輸中的應用分析.