4

最近、私が公開しているいくつかの RSS フィードに HTML を導入しました (これまではプレーン テキストのみで、マークアップはありませんでした)。文字エンコーディング (htmlspecialchars など) を使用するか、すべてを CDATA にカプセル化するだけで、どちらの方法が優れているか疑問に思いました。

CDATA の方が簡単に思えるかもしれませんが、一方のアプローチと他方のアプローチを選択する理由が (微妙であるかどうかにかかわらず) あるかどうかは不明です。(まず、ソースを表示するときに CDATA アプローチの方が読みやすいでしょう...)

4

4 に答える 4

4

CDATA は、XML パーサーによって解析されるべきではないデータ用です。CDATA ブロックに含まれていないタグはXML パーサーによって解析され、異なる意味を持つ場合があります。

CDATA は、必要がない場合、パーサーのオーバーヘッドも発生させる可能性があります。HTML (またはそれ以外) が使用されないことがわかっている場合はいつでも CDATA ブロックを回避するようにしてください。それ以外の場合は使用してください。

そうは言っても、常に RSS よりも Atom を好むべきだという点で、私は jamesh に同意します。私はフィード リーダーを作成しており、フィードをスクレイピングするときは、常に RSS よりも Atom を好みます。

于 2008-10-28T11:44:59.887 に答える
3

個人的には、CDATA の方が簡単です。サブスクライバーが実際の HTML を表示できるため、読者は何か面白いことをする必要がありません。

HTML エンコーディングを使用する場合、サブスクライバー リーダーまたは Web サイト自体がソースをデコードして HTML を表示する必要があります。

于 2008-10-27T19:24:25.200 に答える
1

RSSの代わりにAtom を使用してください。

Atom は適切に名前空間が付けられた XML であるため、エンコーディングの問題について心配することなく、XHTML をすぐに組み合わせることができます。

それは RSS が存在するすべての場所でほぼサポートされています。これは単なるバニラ Atom であるため、ライブラリを操作するために本当に使用したくない場合は、独自の Atom を作成する方が簡単です。

Atom は IETF 標準でもありますが、RSS はそうではありません。

于 2008-10-27T19:23:34.267 に答える
0

htmlentities() は魔法のように機能します。CDATA を使用する必要はありません。 http://php.net/manual/en/function.htmlentities.php

于 2011-02-25T22:05:34.763 に答える