6

私は多くのことを見回しましたが、特別な XML 文字のみをエスケープする組み込みの .Net メソッドを見つけることができませんでした: 、、、、 および<それが タグでない場合。>&'"

たとえば、次のテキストを見てください。

Test& <b>bold</b> <i>italic</i> <<Tag index="0" />

私はそれを次のように変換したい:

Test&amp; <b>bold</b> <i>italic</i> &lt;<Tag index="0" />

タグがエスケープされていないことに注意してください。基本的に、この値を の に設定する必要がありInnerXMLXmlElementその結果、これらのタグを保持する必要があります。

私は独自のパーサーを実装することを検討し、 aStringBuilderを使用して可能な限り最適化しましたが、かなり厄介になる可能性があります。

また、物事を単純化する可能性のある許容可能なタグも知っています (br、b、i、u、blink、flash、Tag のみ)。さらに、これらのタグは自己終了タグにすることができます

(e.g. <u />)

またはコンテナタグ

(e.g. <u>...</u>)
4

3 に答える 3

2

あなたは実際に不正な形式の HTML を修正しようとしているため、個人的にはそれが可能だとは思いません。したがって、エンコードするものとエンコードしないものを決定するために使用できるルールはありません。

どう見て<<Tag index="0" />も有効な HTML ではありません。

実際のタグがわかっている場合は、物事を簡素化できるホワイトリストを作成できるかもしれませんが、問題をより具体的に攻撃する必要があるため、どのシナリオでもこれを解決できるとは思いません.

<実際、あなたのテキストには実際にはランダムなものや横たわっていない可能性が>あり、それは(おそらく)問題を大幅に単純化しますが、本当に一般的な解決策を考え出そうとしているのであれば....あなたは幸運です。

于 2012-12-19T22:40:37.143 に答える