TClientDataset-XML映射
我试图将TClientDataSet中的数据保存到XML文件中,但它不喜欢我的一些字段。帮助文件要求以两种方式之一创建定义:使用my\bin文件夹中的xmlmapper.exe文件或IDOMDocument接口 问题是,xmlmapper.exe不存在,IDOMDocument是Delphi 2009发布时没有编写文档的恼人结构之一。因此,我必须在一个不存在的EXE或一个没有文档的接口之间进行选择,并且没有指示哪些对象实现了它或如何创建它们TClientDataset-XML映射,xml,delphi,delphi-2009,tclientdataset,Xml,Delphi,Delphi 2009,Tclientdataset,我试图将TClientDataSet中的数据保存到XML文件中,但它不喜欢我的一些字段。帮助文件要求以两种方式之一创建定义:使用my\bin文件夹中的xmlmapper.exe文件或IDOMDocument接口 问题是,xmlmapper.exe不存在,IDOMDocument是Delphi 2009发布时没有编写文档的恼人结构之一。因此,我必须在一个不存在的EXE或一个没有文档的接口之间进行选择,并且没有指示哪些对象实现了它或如何创建它们 有人知道我在这种情况下应该做什么吗?XMLMapper
有人知道我在这种情况下应该做什么吗?XMLMapper.exe在我的\bin目录中,它也在我的工具菜单下(尽管我可能已经在那里添加了它…)您有什么版本的Delphi?我看了这本书,没有看到任何看起来像它的东西,这三本书都没有。您可以再次运行安装,看看是否跳过了安装。您可以查看一些第三方Delphi书籍(Marco Cantu有一些),看看它们是否记录了IDOMDocument。您也可以。如果您使用的字段在delphi的XML序列化中不受支持,则需要创建自己的XML加载/保存函数
这并不难,如果您这样做了,代码可以扩展为其他序列化格式(JSON、CSV、XLSX等)。第三种选择是使用OmniXML或NativeXml之类的XML库,简单地迭代所有记录并使用自编代码将字段写入XML 这样做的好处是可以完全控制所有字段类型和特定字段的转换。声明:
void __fastcall SaveToFile(const System::UnicodeString FileName = System::UnicodeString(), TDataPacketFormat Format = (TDataPacketFormat)(0x0));
Mem1->SaveToFile("C:\wateverfile.xml",dfXMLUTF8);
或
或
:信息以二进制格式编码李>dfBinary
:信息以XML编码,扩展字符使用转义序列编码李>dfXML
:信息用XML编码,扩展字符用UTF8表示dfXMLUTF8
Mem1->SaveToFile("C:\wateverfile.xml",dfXML);
Mem1->SaveToFile("C:\wateverfile.cds",dfBinary); //for a binary save