人間が読める方法でXMLに任意のテキストをエンコードする良い方法は何ですか?
-
09-12-2019 - |
質問
私がこれまでのものをCDATAタグに入れて、それを複数の隣接するCDatasに分割してテキストに現れる可能性を扱っています。
これについてはわかりませんが、XMLパーサーはCDataタグの内側の改行に失敗することができます。これは彼らをどういうわけか逃げることを意味するでしょう...
Perlを使用してこれらのXMLファイルを生成し、C ++(expatを使用)、Java、C#。
最も重要なことに、結果のファイルはやや人間が読める/修正可能であることを望みます。これらのニーズに合った符号化方式を知っている人はいますか?私はこれを使用してデータベースのデータを保存するので、任意のテキストを受け入れ、解析時にまったく同じテキストを返す必要があります。
解決
XMLはすでにこれをサポートしていますが、特別なことをする必要はありません。また、確かにCDATAを使用する必要はありません。まともなライブラリを使用するだけで、UTF-8エンコーディングを使用していることを確認してテキストノードを追加してください。何かが「紛失」されているのなら、それはバグです。XMLはすでに比較的人間が読めることができる「エンシング」(エスケープ)を持っています。それはあなた自身の発明を発明するよりもはるかに有用になる標準です。
他のヒント
コンテンツがHTMLの場合は、次のようなコンテンツをエンコードできます。
<html><b>Bold Text</b></html>
.
VS
<html><![CDATA[<b>Bold Text</b>]]></html>
. HMMは、CDATAのセクションを通知できる限り文字データのためのものであり、制御文字はカウントされません。これは、NEWLINESの問題で、XMLパーサーがそれらがコントロールキャラクターかどうか(歴史的に、はい、じんそう)を判断することを判断します。
読みやすさを損なう間は、エスケープシーケンスを使用して改行をエンコードできます。 適切にエスケープしていると仮定すると、解析は正しく変換する必要があります。エンコード時にそれをメモしなければならないだけです。
「人間が読める」要件を完全に違反する別のオプションは、Base-64にテキストをエンコードすることです。これにより、XMLで任意の情報をエンコードできます。