摘要:隨著計算機時代的蓬勃發展,Internet的普及給社會以及人民的生活帶來了巨大的影響。與此同時,B/S結構的多系統相互訪問技術應時代的發展也如雨后春筍般不斷涌現出來,相應的多系統間數據交互產生的問題也是越來越多,XML的數據解析與系統業務邏輯如何融合就是其中比較難以解決的問題之一。
關鍵詞:XML Java
在web中,多系統間數據交互一般使用WebService技術,它是一種構建應用程序的普遍模型,可以在任何支持網絡通信的操作系統中實施運行;它是一種新的web應用程序分支,是自包含、自描述、模塊化的應用,可以發布、定位、通過web調用。WebService是一個應用組件,它邏輯性的為其他應用程序提供數據與服務。各應用程序通過網絡協議和規定的一些標準數據格式(Http,XML,Soap)來訪問WebService,通過WebService內部執行得到所需結果。Web Service可以執行從簡單的請求到復雜商務處理的任何功能。一旦部署以后,其他WebService應用程序可以發現并調用它部署的服務。WebService的主要目標就是跨平臺的可互操作性。為了達到這一目標,WebService完全基于XML、XSD等獨立于平臺、獨立于軟件供應商的標準,是創建可互操作的、分布式應用程序的新平臺。
Java作為現下最流行的可撰寫的跨平臺應用軟件的面向對象的程序設計語言,在多系統數據交互這方面具有先天的優勢。它具有動態性,它的設計目標之一是適應于動態變化的環境。Java程序需要的類能夠動態的被載入到運行環境,也可以通過網絡來載入所需要的類。安全性,Java通常被用在網絡環境宏,為此,Java提供了一個安全機制加以防惡意代碼的攻擊。除了Java語言具有的許多安全特性以外,Java對通過網絡下載的類具有一個安全防范機制(類ClassLoader),如分配不同的名字空間以防替代本地的同名類、字節代碼檢查,并提供安全管理機制(類SecurityManager)讓Java應用設置安全哨兵。多元性,作為現下最流行的語言,應用之廣泛,資源之充足都是現今流行語言中的佼佼者,在行業和企業信息化、電子政務及辦公自動化、嵌入式設備及消費類電子產品、輔助教學等領域發揮著其多元性的優勢。
XStream可以完美轉換XML,與以往的解析XML工具dom相比,XStream是一個易用的、開源的庫,使用起來簡單、小巧,容易理解,可以輕易的將Java對象和xml文檔相互轉換,而且可以修改某個特定的屬性和節點名稱。就是由于與Java對象的完美轉換才更貼近于面向對象的設計思想,讓開發人員更易于使用,更易于過度解析XML與項目業務邏輯之間的聯系。XStream不僅對XML的轉換非常友好,而且提供annotation注解,可以在avaBean中完成對xml節點、屬性的描述。以及對JSON也支持,只需要提供相關的JSONDriver就可以完成轉換。使用XStream序列化的類不需要實現Serializable接口。XStream是一種序列化工具而不是數據綁定工具,就是說不能從XML或者XML Schema Definition (XSD)文件生成類。
和其他序列化工具相比,XStream 有三個突出的特點:①XStream不關心序列化/逆序列化的類的字段的可見性。②序列化/逆序列化類的字段不需要getter和setter 方法。③序列化/逆序列化的類不需要有默認構造函數。
不需要修改類,使用 XStream就能直接序列化/逆序列化任何第三方類。XStream也有其欠缺的地方,當XML過大時用XStream解析就略顯笨重,SAXParser可以解決這個問題,SAXParser在處理XML時非常類似于流媒體的方式,分析能夠立刻開始,而不是等待所有的數據被處理。而且程序只是在讀取數據時檢查數據,因此不需要將數據存儲在內存中。這對于處理大型XML來說是個巨大的優點,事實上,程序甚至不必解析整個文檔,它可以在某個條件得到滿足時停止解析,這種讀取方式比XStream與DOM都要快上許多。所以在讀取大型XML時可以把XStream與SAXParser結合起來使用,用SAXParser讀取整個XML把核心數據部分讓XStream來解析成JavaBean,這樣既解決了大數據的問題又利用了XStream快速轉化JavaBean的優點。
為了利于多系統間數據交互的一致性與標準性,需要在開發項目初期就要制定好數據交互的XSD標準( XML Schemas Definition )。XSD描述了XML文檔的結構??梢杂靡粋€指定的XSD來驗證某個XML文檔,以檢查該XML文檔是否符合其要求。文檔設計者可以通過XSD指定一個XML文檔所允許的結構和內容,并可據此檢查一個XML文檔是否是有效的。XSD本身是一個XML文檔,它符合XML語法結構。可以用通用的XML解析器解析它。以此來約束多方的開發數據交互邏輯,這樣多系統間才會拋開各種開發語言不兼容的鴻溝,達成數據通信的目的。當一方接收到傳過來的XML文件時首先需要對其進行XSD校驗,如果不符合事先已規定的XSD的規范,可以立刻退回給發送方,告之不符合XSD校驗拒絕處理等返回信息。反之,如果校驗通過則可以進行后續業務處理。
通過XStream解析的XML轉化為JavaBean利用Java的反射技術來實現程序的自動化處理相應業務邏輯。Java反射是在運行狀態中,對于任意一個類,都能夠知道這個類的所有屬性和方法;對于任意一個對象,都能夠調用它的任意一個方法和屬性;這種動態獲取的信息以及動態調用對象的方法的功能稱為java語言的反射機制。Java反射機制可以在運行時判斷任意一個對象所屬的類;在運行時構造任意一個類的對象;在運行時判斷任意一個類所具有的成員變量和方法;在運行時調用任意一個對象的方法;生成動態代理。Java語言具有很強的動態性就是因為反射機制的存在,它可以于運行時加載、探知、使用編譯期間完全未知的calss,獲悉其完整構造,并生成其對象實體、或對其屬性設置或調用其方法。在處理一條XML時,會出現不同的業務邏輯僅需要其一部分的數據,這時就需要制定一個配置文件用來記錄在XML中哪部分數據是需要哪個業務邏輯來處理的,相當于制定了一個XML與系統內部邏輯的一個“索引”,讓程序可以通過這個“索引”來自動根據傳進來的數據通過反射機制去實現相應的業務邏輯。所以在解析xml時得到的JavaBean完全可以利用Java反射來進行對本項目業務邏輯的調用與處理,實現項目的程序自動化。
多系統間的數據交互問題一直以來就是比較讓人頭痛的問題,尤其加上各種語言的不兼容以及各種業務邏輯的限制問題更甚?;贘ava的XML解析與反射設計模式就是用來解決這類問題的,它不但能幫助開發人員解決多系統間的數據交互問題還可以減少工作量,減少開發周期,減少BUG的產生,實現數據與項目內部邏輯一體化。
參考文獻:
[1]葉成蔭,何愉.《Java程序設計》雙語教學研究[J].價值工程,2012(04).
[2]沈軍,顧冠群.基于Java的XML解析器設計與實現[J].小型微型計算機系統,2002(12).
[3]桂紹鋼.Gei基于Java的XML解析器實現[J].電腦知識與技術,2010(27).