3

Delphi 2009 と IXMLDOMDocument2 の使用

XML を IXMLDOMDocument2 にロードすると、「テキスト コンテンツに無効な文字が見つかりました」というエラーが表示されます。文字は 1B (16 進数) で、CDATA セクション内に存在します。Microsoft の XML ビューアー (IE) は、ファイルを問題なくロードします。XMLは次のようになります...

<data><child><![CDATA[-- ]]></child></data>

注: XML を貼り付けようとしましたが、特殊文字が削除されました。CDATA セクションには、XML ファイルの「--」に続く 1B 文字があります。

XML およびその他のエンコーディングの先頭に追加しようとしましたが、何も機能しません。このファイルをロードするためにできることはありますか?

ありがとう、マイケル

4

2 に答える 2

5

文字 U+001B は、残りのほとんどの ASCII 制御文字と同様に、XML では許可されていません。これは整形式ではなく、Microsoft の XML ビューアーが文句を言わなければ、XML の規則に従って解析していません。ちっ!

XML 1.1のみでは、U+0000 以外のすべてを のような文字参照としてドキュメントに含めることができます&#x1B;。(明らかに、これは CDATA セクションでは役に立ちませんが、とにかく CDATA セクションはあまり役に立ちません。)

XML に任意の制御文字を含める必要がある場合は、通常、base64 などのアプリケーション固有のエンコード スキームを使用する必要があります。

于 2010-10-28T16:44:18.803 に答える
0

一部のアプリケーションから呼び出す必要がある Web サービスから&#x0;、XML を汚染する多くの文字を取得します。この問題を解決するには、最初に WideString 変数に XML をロードし、StringReplace() を使用して不正なテキストを置き換えてから、XML を IXMLDocument インターフェイス オブジェクトに追加します。
汚いですね、わかります。ただし、不正な文字を含む XML ファイルを処理する必要がある場合は、これが最も簡単なオプションです。

于 2010-10-29T10:30:57.267 に答える