2012-08-27 50 views
3

我正在開發一個Delphi應用程序,它需要從一段工作中獲取行並將它們轉換爲單個XML文件以上傳到第三方Web服務。如何將數據庫查詢的行轉換爲XML文件?

有沒有任何組件或庫可以做到這一點?如果不是,構建該DB2XML轉換器的代碼的最佳方法是什麼?

我注意到大多數XML問題都是關於如何將其轉換爲其他類型的數據。

注意:數據庫將是MySQL或Firebird。

+0

要做到這一點是那麼微不足道的代碼,你爲什麼要使用庫?只需推出自己的代碼。 –

回答

7

您可以使用TDataSetProvider組件填充0123ata的TDataSet內容,然後使用SaveToFile方法創建xml文件。

試試這個樣本

procedure DataSetToXML(DataSet : TDataSet; const FileName:string); 
var 
LProvider : TDataSetProvider; 
LClient : TClientDataSet; 
begin 
    LProvider:=TDataSetProvider.Create(nil); 
    try 
    LProvider.DataSet:=DataSet; 
    LClient:=TClientDataSet.Create(nil); 
    try 
     DataSet.DisableControls; 
     try 
     if not DataSet.Active then 
      DataSet.Active:=True; 
     LClient.SetProvider(LProvider); 
     LClient.Active:=True; 
     LClient.SaveToFile(FileName, dfXMLUTF8); 
     finally 
     DataSet.EnableControls; 
     end; 
    finally 
     LClient.Free; 
    end; 
    finally 
    LProvider.Free; 
    end; 
end; 
+0

非常好。那麼我應該把任何東西放在後面,只需打開文件並插入更多數據... – PSyLoCKe

+0

+1,現在我想知道['TXMLTransformClient']的含義(http://docwiki.embarcadero.com/Libraries/ en/Xmlxform.TXMLTransformClient)和相關的(可能還有一些舊學校?)。 – TLama

+0

XMLTransportClient比ClientDataSet(D3,IIRC中更高版本的SKU中可用)的時間少很多,並且使用D5更廣泛地使用它。 XMLTransportClient我相信稍後會添加SOAP/WSDL支持(我認爲D3發佈時並不存在SOAP)。 –

0

您可以將表放入TClientDataSet中,然後使用XMLData屬性以XML形式導出。

相關問題