7

私の Java アプリケーションでは、0x2CDATA 内に制御文字を含む XML ドキュメントを解析する必要があります。

いくつかの方法を試しましたが、うまくいきませんでした。あらゆる種類のエンコーディングを避けたい。

XML1.1に何か方法はありますか?

4

2 に答える 2

11

CDATA 内に制御文字 0x2 を含む xml を解析する必要があります

それでは、それは XML ではありません。生の制御文字 U+0002 は、整形式ではないため、XML ドキュメントではないことを意味します。

XML 1.1 のみで、文字参照としてエンコードされた制御文字を含めることができます。そのため、解析\x02する前に文字列を置換して修正しようとした可能性があります。ただし、CDATA セクションに文字参照を入れることはできないため、これもうまくいきません。

編集:すべての浮遊 U+0002 文字が CDATA セクション内にあることが絶対に確実な場合は、それぞれを次のように置き換えることで、おそらく短期的に修正できます。

]]>&#2;<![CDATA[

しかし、これは超シャンキーです。最初に問題のある XML を生成したものはすべて修正する必要があります。それを作成した責任者を蹴ってください!

于 2010-04-12T14:12:04.303 に答える
2

XML cannt contain ASCII control characters (apart from TAB, CR and LF), not even inside a CDATA section. They are disallowed by the XML spec.

Encode binary data into Base64 strings and write them to XML. No need for CDATA in this case.

于 2010-04-12T14:01:00.890 に答える