2

これまでのところ、テキストをCDATAタグに入れ、複数の隣接するCDATAに分割することで、テキストにCDATAの末尾が表示される可能性に対処しています。

これについてはよくわかりませんが、XMLパーサーはCDATAタグ内の改行を保持できない可能性があります。これは、どういうわけかそれらをエスケープすることも意味します...

Perlを使用してこれらのXMLファイルを生成し、C ++(expatを使用)、Java、およびC#で解析したいと思います。

最も重要なことは、結果のファイルを人間が読める形式/変更可能な形式にすることです。これらのニーズに合うエンコーディングスキームを知っている人はいますか?これを使用してデータベースのデータを格納しているため、任意のテキストを受け入れる必要があり、解析時にまったく同じテキストが返されます。

4

3 に答える 3

1

xmlはすでにこれをサポートしており、特別なことをする必要はなく、CDATAを使用する必要もありません。適切なライブラリを使用し、UTF-8エンコーディングを使用していることを確認して、テキストノードを追加してください。何かが改行を「失っている」場合、それはバグです。xmlには、比較的人間が読める形式の「エンコーディング」(エスケープ)がすでに含まれています。また、独自に発明するよりもはるかに便利な標準です。

たとえば、https://stackoverflow.com/a/1140802/181772を参照してください

于 2012-03-07T21:33:42.220 に答える
0

たとえば、コンテンツがHTMLの場合、コンテンツをエンコードできます。

<html>&lt;b&gt;Bold Text&lt;/b&gt;</html>

対。

<html><![CDATA[<b>Bold Text</b>]]></html>
于 2012-03-07T21:08:04.787 に答える
0

うーん、私が知る限り、CDATAセクションは文字データ用であり、制御文字はカウントされません。これは、改行の問題で、XMLパーサーが制御文字であるかどうかについて判断を下すことを意味すると思います(歴史的にはそうですが、実際には...いいえ)。

読みやすさは損なわれますが、エスケープシーケンスを使用して改行をエンコードできます。適切にエスケープしていると仮定すると、解析によって適切に変換されるはずです。エンコード時にメモする必要があります。

「人間が読める」要件に完全に違反する別のオプションは、テキストをbase-64でエンコードすることです。これにより、XML内の任意の情報をエンコードできます。

于 2012-03-07T21:28:43.537 に答える