Delphi 6 XML映象工具

Delphi 6 含有許多更新更強的XML支持功能,增加了XML文件編程,XML數據綁定向導,XML映象和BizSnap(SOAP/XML Web服務)。本文是三篇論述Delphi 6中XML功能系列文章的第三篇,也是最後一篇,論述Delphi 6中的XML映象工具,也稱之爲XML映象器(XML Mapper)。

XML映象器
可以單獨打開或者在IDE的工具(Tools)菜單中打開映象器(XML Mapper)。這個工具將XML文件影射爲類似於數據庫中的數據集(DataSet)!在前二篇文章中,我們都使用TXMLDocument組件來處理XML文件或XML綁定的數據。現在,我們不再使用TXMLDocument組件了。我們用XML映象器將XML文件轉換成數據包(或反之),這樣就可以象我們非常熟悉得那樣使用諸如DataSet這樣的組件來處理XML數據。
XML映象器可以打開XML文件和數據包文件(*.xml,*.cds),綱文件(*.dtd,*.xdr,*.xsd),庫文件(*.xrp)和轉換文件(*.xtr)。後面這個轉換文件是由映象器自行產生的。現在加載我們在前二篇文章中用到的Clinic.xml文件,看看數據影射成什麼樣。

如圖1所示,Clinic.xml影射爲一個Clinics結構,含有若干Clinic子項。每個Clinic有4個域:@No, Title, Date, 和Topics。注意@No是屬性,其他3個是元素。
將鼠標移至Clinic節點,按右鍵,選擇"Select All"(Ctrl+A)或者"Select All Children",這樣就把@No, Title, Date and Topics各項加到中間的映象表內。此時還沒有生成相應的數據集域。
我們再次到Clinic節點按下鼠標右鍵,選擇"Create Datapacket from XML"(Ctrl+D),這時產生了相應的數據包並顯示在映象器的右方,如圖2所示。
映象器將XML文件轉換成4個標準格式的數據包。我們還可以增加或刪除數據包。這在B2B場合尤爲重要,將接收到的數據(紀錄)插入到數據庫中。

創建並測試轉換
按下Create and Test Transformation按鈕,隨即彈出一個DBGrid窗口,以ClientDataSet數據包格式顯示Clinic.xml文件裏的數據。數據轉換之後,有4種方式存盤。對於初學者來說,可以存回原先的Clinic.xml文件。另外還可以存爲包數據文件格式(*.xml),庫文件(repository)格式(.xrp)和轉換文件格式(*.xtr)。後面的庫文件可以被XMLTransform組件(在Data Access標籤裏)調用。

XML轉換
Delphi 6裏有3個XML轉換組件。TXMLTransformProvider組件通過clinic.xtr文件將原始XML文件轉換到ClientDataSet。
舉例來說,在Delphi 6的主窗體上安放一個TXMLTransformProvider(在Data Access標籤裏)。將TransformRead屬性的TransformationFile子屬性設爲clinic.xtr作爲數據源。將XMLDataFile設爲clinic.xml文件。
然後安放一個ClientDataSet組件,將它的ProviderName屬性設爲XMLTransformProvider。
現在可以激活ClientDataSet組件了,它將由XMLTransformProvider提供的數據轉換過來。它的PacketRecords屬性值缺省爲-1,表示轉換全部XML文件。
要顯示數據,我們再加入DataSource和DBGrid組件。將DataSource指向ClientDataSet,DBGrid指向DataSource,就象我們通常使用得那樣。結果顯示如圖3。

現在可以象使用數據庫數據那樣使用XML文件裏的數據了。如果對數據進行了修改,可以調用ClientDataSet.ApplyUpdates方法將改動的數據存回XML文件。
但是這樣做是不夠的。我們還得啓動XML映象器,將創建方式由"XML to Datapacket"改爲"Datapacket to XML"。這時如果按下"Create and Test Transformation"鍵,看到的是空白頁。然後將轉換結果存爲ClinicToXml.xtr文件。
現在,將TXMLTransformationProvider的TransformationWrite屬性中的子屬性TransformationFile設爲ClinicToXml.xtr文件。
最後在主窗體的OnClose事件中加上存盤指令:
  ClientDataSet1.ApplyUpdates(-1)
程序退出之前會將作出的數據修改存回XML文件。
這樣就爲Delphi 6的B2B開發環境BizSnap的虛擬中間層作好了數據準備。

發佈了29 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章