1

TClientDataSet のデータを XML ファイルに保存しようとしていますが、一部のフィールドがうまくいきません。ヘルプファイルには、\bin フォルダー内の xmlmapper.exe ファイルまたは IDOMDocument インターフェイスを使用する 2 つの方法のいずれかで、定義を作成するように記載されています。

問題は、xmlmapper.exe がそこにないことです。IDOMDocument は、ドキュメントを作成せずに Delphi 2009 でリリースされた厄介な構造の 1 つです。そのため、存在しない EXE か、ドキュメントがなく、どのオブジェクトがそれを実装しているか、またはどのように作成するかを示していないインターフェイスのいずれかを選択する必要があります。

この場合、私が何をすべきか知っている人はいますか?

4

5 に答える 5

3

Delphi の XML シリアル化でサポートされていないフィールドを使用している場合は、XML のロード/保存用に独自の関数を作成する必要があります。

難しいことではありません。そうすれば、そのコードを他のシリアル化形式 (JSON、CSV、XLSX など) に拡張できます。

于 2009-01-10T11:13:26.950 に答える
0

XMLMapper.exe\bin ディレクトリにあり、ツール メニューの下にもあります (そこに追加したかもしれませんが. . .) Delphi のエディションは何ですか? 機能マトリックスを見たところ、3 つのエディションすべてにないようなものは見当たりません。インストールを再度実行して、インストールをスキップしたかどうかを確認することができます。

于 2009-01-10T06:29:11.237 に答える
0

サード パーティの Delphi の本 (Marco Cantu が数冊あります) を見て、IDOMDocument が文書化されているかどうかを確認してください。また、いくつかの例を見て回ることもできます。

于 2009-01-10T06:32:32.760 に答える
0

3 番目のオプションは、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 に答える