當前位置:編程學習大全網 - 編程語言 - 這種文件怎麽打開?

這種文件怎麽打開?

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的虛擬中間層作好了數據準備。

  • 上一篇:在香港城市大學讀電子信息工程是怎樣壹種體驗
  • 下一篇:2019-02-23 QTL(轉自知乎)
  • copyright 2024編程學習大全網