程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> TClientDataSet[28]: 讀寫其他格式的 XML 文件

TClientDataSet[28]: 讀寫其他格式的 XML 文件

編輯:Delphi

 TClIEntDataSet 可以直接存取的 XML 有自己的格式規范, 存取其他格式 XML 需要相應的映射文件(*.xtr).

  這種 *.xtr 文件是用 XML Mapper(Delphi 自帶, 可從開始菜單或 IDE -> Tools 啟動)制作的.

  一般會需要兩個 *.xtr 文件, 一個用於讀取(例子中是: ToDp.xtr), 一個用於寫入(例子中是: ToXML.xtr).

  可以通過 *.xtr 文件只讀寫源 XML 中的部分數據, 如果讀取過於復雜的 XML 會生成嵌套的 DataSet 字段.

  下面演示 ToXml.xtr、ToDp.xtr 的制作過程, 假如源文件(Test.XML)如下:

   [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運行]

TClientDataSet[28]: 讀寫其他格式的 XML 文件

  查看原圖(大圖)

  然後通過 TXMLTransformProvider 或 TXMLTransform 都可以讓 TClIEntDataSet 讀寫此 XML 了.

  先用 TXMLTransformProvider:

//先添加控件: ClIEntDataSet1、DataSource1、DBGrid1、XMLTransformProvider1、Button1, 然後:  
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 ChDir('C:\Temp\DelphiTest\' ); { 三個相關文件都放這了 } 
 
 { 數據控件掛接 } 
 DBGrid1.DataSource := DataSource1; 
 DataSource1.DataSet := ClIEntDataSet1; 
 ClIEntDataSet1.ProviderName := 'XMLTransformProvider1'; { 數據提供者 } 
 
 { 讀取轉換; 包括下面的屬性都可在設計時設置 } 
 XMLTransformProvider1.TransformRead.TransformationFile := 'ToDp.xtr'; 
 { 寫入轉換 } 
 XMLTransformProvider1.TransformWrite.TransformationFile := 'ToXML.xtr'; 
 { 源文件 } 
 XMLTransformProvider1.XMLDataFile := 'Test.XML'; 
 
 { 打開 } 
 ClIEntDataSet1.Open; 
end; 
 
{ 數據編輯後, 保存到源文件 } 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 ClIEntDataSet1.ApplyUpdates(0); 
end; 

  特別是在只讀或只寫的情況下用 TXMLTransform 更好, 下面是用 TXMLTransform 讀取的例子:

//先添加控件: ClIEntDataSet1、DataSource1、DBGrid1、XMLTransform1, 然後: 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 ChDir('C:\Temp\DelphiTest\'); 
 
 DBGrid1.DataSource := DataSource1; 
 DataSource1.DataSet := ClIEntDataSet1; 
 
 XMLTransform1.SourceXmlFile := 'Test.XML'; 
 XMLTransform1.TransformationFile := 'ToDp.xtr'; 
 
 ClIEntDataSet1.XMLData := XMLTransform1.Data; 
end; 


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved