1

我正在尝试将 TClientDataSet 中的数据保存到 XML 文件中,但它不喜欢我的某些字段。帮助文件说以两种方式之一创建定义:使用我的 \bin 文件夹中的 xmlmapper.exe 文件或使用 IDOMDocument 接口。

问题是,xmlmapper.exe 不存在,并且 IDOMDocument 是 Delphi 2009 发布时没有为其编写文档而发布的那些烦人的结构之一。因此,我必须在不存在的 EXE 或没有文档且没有指示哪些对象实现它或如何创建它们的接口之间进行选择。

有谁知道在这种情况下我应该怎么做?

4

5 回答 5

3

如果您使用的是 delphi 的 XML 序列化不支持的字段,您需要创建自己的函数来加载/保存 XML。

这并不难,如果你这样做,该代码可以扩展为其他序列化格式(JSON、CSV、XLSX、...)。

于 2009-01-10T11:13:26.950 回答
0

XMLMapper.exe我的\bin 目录中,它也在我的工具菜单下(虽然我可能已经将它添加到那里......)你有什么版本的Delphi?我查看了特征矩阵,我没有看到任何看起来不在所有三个版本中的东西。您可能会再次运行您的安装,看看您是否跳过了它的安装。

于 2009-01-10T06:29:11.237 回答
0

您可能会查看一些第 3 方 Delphi 书籍(Marco Cantu 有一些),看看它们是否记录了 IDOMDocument。您也可以四处寻找一些示例

于 2009-01-10T06:32:32.760 回答
0

第三种选择是使用 OmniXML 或 NativeXml 之类的 XML 库,简单地遍历所有记录并将字段写入 XML,并使用自己编写的代码。

这样做的好处是可以完全控制所有字段类型和特定字段的转换。

于 2011-09-15T06:37:01.210 回答
-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 表示。
于 2012-02-14T01:49:32.227 回答