ユーザーが入力したメッセージを含むタグを持つ XML ドキュメントがあります。不要な文字のエスケープを避けたいと考えています。
以下のリンクによると、厳密に不正な文字は "<" と "&" だけです。
注意: 文字 "<" と "&" のみが XML で厳密に違法です。大なり文字は合法ですが、それを置き換えるのは良い習慣です。
しかし、一部のパーサーでは、シーケンス ]]> で問題が発生しました。これはパーサーの問題によるものですか、それとも XML 標準のどこかで本当に違法と定義されているのでしょうか?
メッセージの例:
<?xml version="1.0" encoding="UTF-8" ?>
<root>
<message><!-- -- -- <![CDATA["TEST"]]></message>
<signature>Evil</signature>
</root>
ご覧のとおり、< と & はエスケープされており、このメッセージは C++ tinyxml と Java JAXB によって正常に解析されます。Firefox 20.0.1 と IE 8.0 の両方が教えてくれます
XML 解析エラー: 整形式ではありません
と
リテラル文字列 ']]>' は、要素コンテンツでは使用できません。
それぞれ。
これは本当に強制された標準的な動作ですか?
編集:もっと検索する必要があったようです, Legally use CDATA in XML . では、Firefox と IE の XML パーサーが壊れているのではないでしょうか?