我正在使用 Delphi7 TClientDataSet
为我的一些数据读取和写入 XML 文件。
但是,当我想在程序外浏览它时(在 Windows 资源管理器中双击 XML),我得到“在文本内容中发现无效字符。错误处理资源' - 即使数据在 Delphi 中读写正常。
有没有办法强制 TClientDataSet
以缩进方式而不是一行写入其内容?
这样我就可以很容易地在文本编辑器中打开它并找出哪个字符会触发上述错误。
无论如何:我发现用 CR/LF 和缩进编写 XML 文件要清楚得多。
最佳答案
当您使用 TCustomClientDataSet.SaveToFile
程序,您可以选择输出格式,默认情况下,此值设置为 dfBinary
以二进制格式对数据进行编码。
procedure TCustomClientDataSet.SaveToFile(const FileName: string = '';
Format: TDataPacketFormat = dfBinary);
尝试更改 Format
dfXML
或 dfXMLUTF8
ClientDataSet1.SaveToFile('file.xml',dfXML);
如果你想格式化 XML 输出,你可以使用 FormatXMLData
函数试试这段代码
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');
关于xml - 使用 Delphi7 TClientDataSet : is it possible to have it save its XML contents in an indented format?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3848853/