陳琦++秦進
摘要:目前,可供選擇的數(shù)據交換技術有很多,例如XML、Json等。文章以XML作為數(shù)據交換的標準進行研究,首先對XML進行了必要的介紹,在此基礎上對常用的XML解析器和XML與關系數(shù)據庫進行交互的過程進行了詳細分析。
關鍵詞:數(shù)據交換;XML;XML解析器;關系數(shù)據庫
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)17-0001-03
Research of Data Exchange Technology Based on XML
CHEN Qi, QIN Jin
(College of Computer Science and Technology, Guizhou University, Guiyang 550025, China)
Abstract: At present, there are a lot of choices of data exchange technology, such as XML, Json, etc. This article chose XML as a data exchange standard to research and firstly introduced some necessary information about XML. On this basis, analyzed the commonly used XML parser and the process of the interactions between XML and relational database in detail.
Key words: data exchange;XML;XML parser;relational database
在信息技術飛速發(fā)展的今天,網絡已經全面普及。不同的信息系統(tǒng)中數(shù)據的結構、類型等是不同的,即各系統(tǒng)之間的數(shù)據是獨立的、無法共享的,形成了“信息孤島”及“信息異構”,在后期進行統(tǒng)計及分析的時候會因為“信息孤島”而導致工作量的加大,并且數(shù)據處理的難度也成倍增大。現(xiàn)在企業(yè)中往往需要多個部門進行協(xié)作,需要頻繁地共享數(shù)據,因此如何解決各業(yè)務間的數(shù)據交換成為了實現(xiàn)數(shù)據共享的首要問題。
目前人們使用的數(shù)據交換技術有很多種,XML就是其中最常見的一種。XML有著嚴格的語法規(guī)范,因此使用XML保存的數(shù)據格式都是一致的,從而能夠很好地解決“信息孤島”和信息異構問題。同時,在存入數(shù)據的時候,還能夠依據XML的規(guī)范對數(shù)據進行判斷,從而有效地避免數(shù)據的重復錄入和數(shù)據不一致性問題。XML以其嚴格的標準和強大的功能贏得了眾多開發(fā)人員的青睞,并成為數(shù)據交換領域的重要標準。
1 常用數(shù)據交換技術比較
數(shù)據在不同的信息實體之間交互的過程稱為數(shù)據交換[1]。目前,常用的數(shù)據交換技術主要有以下四種:
1)電子數(shù)據交換(EDI)方式[2]:EDI通過統(tǒng)一的格式來交換企業(yè)信息,企業(yè)之間通過專用的數(shù)據網絡來交換數(shù)據。EDI也帶來了許多問題,如格式不靈活、成本高、安全控制困難、連接可靠性不高等。
2)中介層方式:提供一個應用程序負責專用的數(shù)據轉換,這個程序是特定的、專用的、復雜的。在這種方式下,參與數(shù)據交換的各方必須嚴格遵循相同的規(guī)則,才能準確地對數(shù)據進行封裝和解析,缺乏良好的復用性和擴展性。
3)中間數(shù)據庫方式:在不同環(huán)境下使用如Access等較小的數(shù)據庫系統(tǒng)來實現(xiàn)不同數(shù)據源間的數(shù)據減緩。先對要轉出的數(shù)據庫生成腳本,得到該數(shù)據庫的表結構,然后按照不同數(shù)據庫系統(tǒng)間的區(qū)別對腳本進行修改,生成符合規(guī)范的SQL語句,最后再在新環(huán)境的數(shù)據庫系統(tǒng)中執(zhí)行腳本[3]。這種利用中間數(shù)據庫的方式需要將信息從其他地方轉存到中間數(shù)據庫中,這一過程需要按照一定的格式對數(shù)據進行轉換,因此操作上比較繁瑣、效率低下。
4)中間件方式:各個數(shù)據源將自己的數(shù)據按照一定的通用格式提供出來,實現(xiàn)透明的數(shù)據交互。與中間數(shù)據庫方式相比,使用中間件較好地保留了各個分布場地的自治權,同時保證了一定的實時性。
2 基于XML的數(shù)據交換技術
2.1 XML介紹
XML[4]是extensible Markup Language(可擴展的標記語言)的縮寫,是W3C組織于1998年2月發(fā)布的標準。W3C組織制定XML標準是為了定義一種能夠在互聯(lián)網上進行數(shù)據交換的標準。W3C采取了簡化SMGL的策略,在SMGL基礎上,去掉語法定義部分,適當簡化DTD部分,并增加了部分互聯(lián)網的特殊部分。因為XML是一種樹狀結構,可以把形式與內容徹底分離,正是基于這個原因,可以使用XML將不同數(shù)據格式的數(shù)據進行轉換,從而達到數(shù)據交換的目的。此外,XML允許用戶按照W3C組織的規(guī)定去定義無數(shù)個自定義標簽,標簽形式多種多樣。XML可以用來描述關系結構的數(shù)據,還可以用作配置文件,當作一個小型的數(shù)據庫或數(shù)據載體來使用。
2.2 基于XML的數(shù)據交換模型
基于XML的數(shù)據交換模型采用了上述的中間件模式來實現(xiàn)數(shù)據源的交換,作為溝通數(shù)據源和應用/邏輯層的一個紐帶。XML在進行數(shù)據交換的過程中,一方面,針對所有數(shù)據源數(shù)據模式進行抽取,將各數(shù)據庫中的不同數(shù)據表示形式統(tǒng)一成一致的數(shù)據視圖 XML文件。另一方面,要將 XML的數(shù)據轉換為 RDBMS系統(tǒng)下的數(shù)據組織形式,以關系數(shù)據庫系統(tǒng)來存儲數(shù)據[5]?;赬ML的數(shù)據交換模型分為三層結構,如圖1所示:
圖1 基于XML的數(shù)據交換模型
2.3 幾種常見的XML解析器
2.3.1 DOM
DOM(Document Object Model),稱為文檔對象模型,是以層次結構組織的節(jié)點或信息的集合,是W3C組織推薦的一種處理XML的標準編程接口,與平臺和語言無關。DOM在解析XML文件的過程中,會一次性將所有內容加載到內存中,形成一個樹形結構,因此DOM又被認為是基于樹或基于對象的模型。在使用DOM過程中會使用Document對象來代表XML在內存中的映像,即代表一個XML文檔的模型樹,所有的節(jié)點都包含在該Document對象中。之后,開發(fā)人員即可使用該對象對XML文檔進行相應的編輯與操作。DOM雖然使用起來較為簡單,但是在處理大文件時就顯得力不從心了。因為DOM每次都會將XML文件全部加載到內存中,因此對于大文件內存的占用就很高。另外,DOM解析速度較慢,效率不高,因此只適用解析小的配置文件等。
2.3.2 SAX
SAX(Simple API for XML),是sun公司提供的一個基于事件的xml解析器,既是一個接口,又是一個軟件包。SAX解析XML文檔不同于DOM,它是多次將XML文檔加載到內存中,因此它可以一邊掃描以便解析。正是基于這一特點,對于大文件,SAX的解析速度比DOM要快得多,并且占用的內存少。SAX采用基于事件的模型,在解析XML文檔的時候,會根據XML此時的狀態(tài),即開始標簽、結束標簽,調用SAX處理器相應的方法。正如我們常說的,任何事物都具有兩面性,SAX也不例外。SAX沒有像DOM那樣的父/子支持,因此不能交流元信息,從而導致了越是復雜的文檔,其應用邏輯就越復雜,編碼的難度就越大。
2.3.3 DOM4J
DOM4J是一個非常優(yōu)秀的JAVA XML API,是由dom4j.org出品的一個XML解析包。DOM4J采用了java集合框架,能夠完全支持DOM和SAX。因為它內部包含了多個接口,因此在使用上非常靈活,從而形成了它性能優(yōu)異、功能強大和極易使用的特點。DOM4J還有一個特點,它是完全開源的,現(xiàn)在越來越多的java軟件都是用它來進行XML解析。DOM4J主要接口圖如圖2所示:
圖中各接口的功能分別為:Node為dom4j中XML的節(jié)點定義了多態(tài)行為;Branch為能夠包含子節(jié)點的節(jié)點定義了一個公共的行為;Element 定義XML 元素;Document定義了XML文檔;DocumentType 定義了XML DOCTYPE聲明;Entity定義了 XML entity;Attribute定義了XML的屬性;ProcessingInstruction 定義了XML 處理指令;CharacterData是一個標識接口,標識基于字符的節(jié)點,如CDATA;CDATA 定義了XML CDATA 區(qū)域;Text 定義XML的文本節(jié)點;Comment 定義了XML注釋的行為。
3 XML數(shù)據交換的實現(xiàn)過程
使用中間件XML來實現(xiàn)數(shù)據的交換,將XML文檔作為一個橋梁實現(xiàn)各平臺之間的互連,從而實現(xiàn)數(shù)據的整合及共享。對于現(xiàn)有的各種資源,其中絕大部分都是結構化的數(shù)據,可以存儲在關系數(shù)據庫中,因此,XML與這些數(shù)據的交換實質上就是與關系數(shù)據庫中數(shù)據的交換。
當前XML與關系數(shù)據庫之間的相互換轉換的方法有很多,例如基于模型驅動的XML與數(shù)據庫雙向映射技術,將XML中的數(shù)據同數(shù)據庫對應的表進行映射匹配,使得XML文件中保存的數(shù)據和數(shù)據間的關系通過這種映射關系保存到數(shù)據庫中[6],該方法的核心是在數(shù)據庫模式(包括關系型和面向對象型)和XML Schema或DTD之間建立雙向映射。另一種方法是在XML和數(shù)據庫之間添加一個數(shù)據轉換程序組件,將數(shù)據從XML文件中解析出來存入數(shù)據庫,或從數(shù)據庫中讀取數(shù)據并添加到XML檔中[7]。
3.1關系數(shù)據庫向XML轉換
關系數(shù)據庫向XML轉換需要經過三個主要步驟:提取、轉換和存儲。首先,從數(shù)據庫中提取要保存在XML文檔中的數(shù)據,數(shù)據的提取可以通過JDBC或者ODBC接口訪問技術實現(xiàn),該數(shù)據包括兩部分:數(shù)據庫中關系模式和表中的字段值。其次,將提取出來的數(shù)據與XML約束(DTD或XML Schema)相結合即可生成XML文檔。這個過程涉及到的操作有兩個:將數(shù)據庫中的關系模式轉換為XML約束、將數(shù)據庫表中的值與XML約束結合生成XML文檔。整個轉換過程如圖3所示。
3.2 XML向關系數(shù)據庫轉換
XML向關系數(shù)據庫轉換實際上就是關系數(shù)據庫向XML轉換的逆過程,也分為三個主要階段:提取、轉換和存儲。首先,使用DOM或SAX等解析方法對XML進行解析,這一過程也涉及兩個操作:提取XML文檔中的約束(XML Schema)并將其轉換為相應的關系模式、解析XML文檔中的數(shù)據。其次,根據上一步得到的關系模式建表,并將解析出來的數(shù)據添加到相應的表中。這一過程可以使用JDBC或ODBC接口訪問技術實現(xiàn)與數(shù)據庫的連接。轉換過程如圖4所示:
圖4 XML向關系數(shù)據庫轉換
4 結束語
XML技術有著嚴格的標準和強大的功能,并且提供了統(tǒng)一的方法來描述和交換獨立于應用程序或供應商的結構化數(shù)據。因此使用XML作為中間件就可以方便的實現(xiàn)各數(shù)據源間數(shù)據的交換,將各數(shù)據源中的數(shù)據統(tǒng)一成一致的格式進行集中處理,進而消除“信息孤島”,實現(xiàn)數(shù)據共享。
參考文獻:
[1] 楊劍. 基于XML的異構數(shù)據交換系統(tǒng)的研究與實現(xiàn)[D].成都: 西南交通大學, 2005.
[2] 朱勤, 陸建新, 陳繼紅. 基于XML的異構數(shù)據交換技術及其Java實現(xiàn)[J]. 計算機應用與軟件, 2004(11): 52-53,125.
[3] 李聰. 基于XML的數(shù)據交換平臺的設計與實現(xiàn)[D]. 武漢: 武漢理工大學, 2009.
[4] Extensible Markup Language (XML) 1.0[EB/OL].http://www.w3.org/TR/REC-xml.
[5] 楊劍. 基于XML的異構數(shù)據交換系統(tǒng)的研究與實現(xiàn)[D]. 成都: 西南交通大學, 2005.
[6] Tom Myers,Alexander Nakhimovsky.JavaXML編程指南[M]. 北京: 電子工業(yè)出版社, 2003.
[7] 李剛. 基于Web訪問數(shù)據庫的實現(xiàn)方案[J]. 計算機工程與應用, 2000(8): 32-35.