2009-01-10 79 views
1

我試圖將TClientDataSet中的數據保存到XML文件,但它不喜歡我的一些字段。幫助文件表示通過以下兩種方式之一創建定義:使用\ bin文件夾中的xmlmapper.exe文件或使用IDOMDocument界面。TClientDataset - XML映射

問題是,xmlmapper.exe不存在,IDOMDocument是Delphi 2009發佈時沒有編寫文檔的煩人結構之一。所以我必須在不存在文檔的情況下選擇一個不存在的EXE或者一個界面,並且不要指出哪些對象實現了它或者如何創建它們。

有沒有人知道我應該在這種情況下做什麼?

+0

你有什麼版本的德爾福? – 2009-01-10 06:30:35

+1

難道你不能只訪問ClientDataSet.XMLData屬性並將其保存到文本文件? – Birger 2009-01-10 08:07:30

回答

0

XMLMapper.exe 是我的\ bin目錄中的,它也在我的工具菜單下(儘管我可能已經在那裏添加了......)你有什麼版本的Delphi?我看着feature matrix,我沒有看到任何看起來不像的所有三個版本。你可能會再次運行你的安裝,看看你是否可以跳過它的安裝。

+0

剛剛檢查。只有我跳過的是色帶控制。 – 2009-01-10 13:02:36

0

你可能會看一些第三方的Delphi書籍(Marco Cantu有幾本),看看他們是否記錄了IDOMDocument。你也可能look around for some examples

3

如果您使用delphi的XML序列化中不支持的字段,則需要創建用於XML加載/保存的自己的函數。

這並不難,如果你這樣做了,那麼這個代碼可以擴展爲其他序列化格式(JSON,CSV,XLSX,...)。

0

第三種方法是簡單地遍歷所有記錄,並使用像OmniXML或NativeXml這樣的XML庫將字段寫入XML並使用自寫代碼。

這樣做的好處是可以完全控制所有字段類型和特定字段的轉換。

-1

宣言:

void __fastcall SaveToFile(const System::UnicodeString FileName = System::UnicodeString(), TDataPacketFormat Format = (TDataPacketFormat)(0x0)); 
Mem1->SaveToFile("C:\wateverfile.xml",dfXMLUTF8); 

Mem1->SaveToFile("C:\wateverfile.xml",dfXML); 

Mem1->SaveToFile("C:\wateverfile.cds",dfBinary); //for a binary save 
  • dfBinary:信息用二進制格式編碼。
  • dfXML:信息以XML編碼,擴展字符使用轉義序列編碼。
  • dfXMLUTF8:信息以XML編碼,擴展字符使用UTF8表示。