5

XDocumentファイルのリストをキャッシュするために使用しています。

<file id="20" size="244318208">a file with an &amp;ersand.txt</file>

この例では、 を使用XTextし、 & などのファイル名の文字を自動的にエスケープさせました。&amp;

<file id="20" size="244318208"><![CDATA[a file with an &ersand.txt]]></file>

このXCData例では、エスケープされた文字列ではなくリテラル文字列を使用できるようにしていたため、アプリケーションと同じように XML に表示されます。

特定の条件下でどちらが優れているのか、それとも単なる個人的な好みなのか気になります。また、何か意味がある場合は、ファイル名に不正な文字が含まれている場合と含まれていない場合があります。

4

4 に答える 4

5

またはを明示的に使用することはありません。文字列を指定して、LINQ to XML で必要なことを何でも実行できるようにします。XTextXCData

ただし、CDATA 以外のバージョンの方が一般的にはわかりやすいと思います。はい、アンパランドはエスケープされます - そしてそう<なるでしょう - しかし、それはCDATA開始/終了セクションよりもかなり少ない毛羽立ちです.

人間が XML 表現自体を見ることは非常にまれであることを忘れないでください。これは、必要なときにその表現で合理的に読み取り可能な情報のトランスポートであるという考えです。私はそれについてあまり夢中になりません。

于 2012-06-13T20:47:09.103 に答える
3

どちらも本質的に同じであり、特定の「ベスト プラクティス」はありません。

個人的には、<![CDATA[]]>大量のエスケープが必要な大量のテキスト (コードの断片や HTML マークアップなど) のために予約しています。

この特定のケースでは、最初の例のように&toをエスケープしたいと思います。&amp;

于 2012-06-13T20:46:04.717 に答える
1

ほとんどのファイル名には、アンパサンドまたはそれ以下の記号は含まれません。したがって、XTextを使用してください。XMLドキュメントへの埋め込みやHTMLフラグメントなど、これらの文字が多く予想される場合のためにXCDataを予約します。

理論的根拠:テキストをシリアル化および解析するためのCPU使用率の違いは完全に無視できます。ただし、ストレージ、帯域幅、またはメモリのニーズには(わずかな)違いがあります。他のすべてが等しい場合は、(違いが小さい場合でも)使用するスペースが最も少ない形式を使用してください。

于 2012-06-13T20:54:29.987 に答える
0

それは問題ではありません。
どちらも有効な XML であり、意味は同じです。

于 2012-06-13T20:46:30.193 に答える