TClientDataSet[28]: 读写其他格式的 XML 文件
生活随笔
收集整理的這篇文章主要介紹了
TClientDataSet[28]: 读写其他格式的 XML 文件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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)如下:
<?xml version="1.0" encoding="gb2312"?> 張三男33李四女44王五女55孫六男66備用
然后通過 TXMLTransformProvider 或 TXMLTransform 都可以讓 TClientDataSet 讀寫此 XML 了.
先用 TXMLTransformProvider:
//先添加控件: ClientDataSet1、DataSource1、DBGrid1、XMLTransformProvider1、Button1, 然后:procedure TForm1.FormCreate(Sender: TObject); beginChDir('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); beginClientDataSet1.ApplyUpdates(0); end;
特別是在只讀或只寫的情況下用 TXMLTransform 更好, 下面是用 TXMLTransform 讀取的例子:
//先添加控件: ClientDataSet1、DataSource1、DBGrid1、XMLTransform1, 然后:procedure TForm1.FormCreate(Sender: TObject); beginChDir('C:\Temp\DelphiTest\');DBGrid1.DataSource := DataSource1;DataSource1.DataSet := ClientDataSet1;XMLTransform1.SourceXmlFile := 'Test.xml';XMLTransform1.TransformationFile := 'ToDp.xtr';ClientDataSet1.XMLData := XMLTransform1.Data; end;
轉載于:https://www.cnblogs.com/del/archive/2010/02/10/1667051.html
總結
以上是生活随笔為你收集整理的TClientDataSet[28]: 读写其他格式的 XML 文件的全部內容,希望文章能夠幫你解決所遇到的問題。