當您使用TCustomClientDataSet.SaveToFile
過程時,可以選擇輸出格式,默認情況下,該值設置爲dfBinary
,以二進制格式對數據進行編碼。
procedure TCustomClientDataSet.SaveToFile(const FileName: string = '';
Format: TDataPacketFormat = dfBinary);
嘗試改變Format
參數dfXML
或dfXMLUTF8
ClientDataSet1.SaveToFile('file.xml',dfXML);
,如果你想格式化您可以使用FormatXMLData
功能的XML輸出試試這個代碼
uses
XMLDoc;
Procedure FormatXMLFile(XmlFile:string);
var
oXml : TXMLDocument;
begin
oXml := TXMLDocument.Create(nil);
try
oXml.LoadFromFile(XmlFile);
oXml.XML.Text:=xmlDoc.FormatXMLData(oXml.XML.Text);
oXml.Active := true;
oXml.SaveToFile(XmlFile);
finally
oXml := nil;
end;
end;
最後你的代碼會看起來像這樣
ClientDataSet1.SaveToFile('test.xml',dfXML);
FormatXMLFile('test.xml');
-1。目前還不清楚縮進XML如何解決無效字符問題。請說明你想解決什麼問題。如果您有兩個問題,請發佈*兩個*問題。 – 2010-10-03 19:10:16
@Rob Kennedy:你有沒有試過用文本編輯器編輯一個xml文件,其中整個文件在一行?如果文件縮進,並且因此使用cr/lf作爲行分隔符,則可以輕鬆地將其加載到編輯器中,並且至少以可視方式查看文件以查找罪魁禍首字符(或多個字符)。你在哪裏看到兩個問題?我問是否可以強制TClientDataset寫一個縮進的xml格式的文件。錯誤是澄清爲什麼我需要這個。問題的標題說是我問,不是嗎?這裏-1是不需要的。 – Edelcom 2010-10-04 06:13:42
我不得不同意Rob在這裏,因爲幾乎所有的開發環境都可以選擇自動格式化XML代碼。即使你不這樣做,也有很多網站可以幫助你設計你的代碼。在Delphi中調整一個非常常見的數據庫組件是爲了完成某些不適合做的事情,這對您的情況有點過分。目前還不清楚您是否想要修正錯誤,或者是否希望將客戶數據集保存爲縮進XML。 – 2013-09-09 04:31:47