TClientDataset - сопоставление XML - PullRequest
1 голос
/ 10 января 2009

Я пытаюсь сохранить данные из TClientDataSet в файл XML, но некоторые поля мне не нравятся. В справочном файле указывается создать определение одним из двух способов: либо с помощью файла xmlmapper.exe в папке my \ bin, либо с помощью интерфейса IDOMDocument.

Проблема в том, что xmlmapper.exe не существует, и IDOMDocument является одной из тех раздражающих структур, для которых Delphi 2009 был выпущен без написания документации. Поэтому мне приходится выбирать между несуществующим EXE или интерфейсом без документации и без указания того, какие объекты его реализуют или как их создавать.

Кто-нибудь знает, что я должен делать в этом случае?

Ответы [ 5 ]

3 голосов
/ 10 января 2009

Если вы используете поля, которые не поддерживаются в XML-сериализации delphi, вам нужно создать свои собственные функции для загрузки / сохранения XML.

Это не сложно, и если вы сделаете это, этот код можно расширить для других форматов сериализации (JSON, CSV, XLSX, ...).

0 голосов
/ 14 февраля 2012

Декларация:

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, а расширенные символы кодируются с использованием escape-последовательности.
  • dfXMLUTF8: информация кодируется в формате XML, а расширенные символы представлены с использованием UTF8.
0 голосов
/ 15 сентября 2011

Третий вариант - просто перебрать все записи и записать поля в XML с помощью самописного кода, используя библиотеку XML, такую ​​как OmniXML или NativeXml.

Это имеет преимущество в том, что имеет полный контроль над преобразованием всех типов полей и определенных полей.

0 голосов
/ 10 января 2009

Вы можете посмотреть на некоторые книги Delphi сторонних производителей (у Marco Cantu есть несколько) и посмотреть, документируют ли они документ IDOMDocument. Вы также можете посмотреть на примеры .

0 голосов
/ 10 января 2009

XMLMapper.exe - это в моем каталоге \ bin, оно также находится в моем меню инструментов (хотя я мог бы добавить его туда ...). Какой выпуск Delphi у вас есть? Я посмотрел на матрицу функций и не вижу ничего похожего на то, чего нет в во всех трех выпусках . Вы можете запустить установку снова и посмотреть, возможно, вы пропустили установку.

...