2017-01-27 10 views
0

私はHtmlAgilityPackを使用して、ユーザーが入力したリッチテキストを消毒し、有害な/望ましくないテキストを取り除いています。問題は、単純なテキストにもHTMLノードHtmlAgilityPack消毒ストリングの問題

として処理されたときにかかわらず、発生した私は

a<b, c>d 

を入力し、それをサニタイズしようとした場合、生成される出力は

a<b, c="">d</b,> 

である私が使用したコードは

ました
HtmlDocument doc = new HthmlDocument(); 
doc.LoadHtml(value); 
// Sanitizing Logic 

var result = doc.DocumentNode.WriteTo(); 

HtmlDocumentで異なるパラメータを設定しようとしました( 'OptionCheckSyntax'、 'OptionAutoCl oseOnEnd '、' OptionWriteEmptyNodes ')は、テキストをノードとして扱いませんが、何も機能しません。これは既知の問題または回避策ですか?

+0

あなたはその入力について何を期待していますか? –

+0

入力と同じです。 HAPを使用する背後にある意図は、スクリプト/リンク/ iframeなどのタグを取り除くことでした。とにかくHAPが新しいHTMLノードの開始点としてすべての '<'を扱わないようにするにはどうしますか? – user3865946

答えて

0

IMOでは、新しいhtmlノードの開始点として '<'をすべて扱わないようにHAPに指示することはできません。しかし、あなたのhtmlがHTMLで検証されているかどうかを確認することができます

string html = "your-html"; 

HtmlDocument doc = new HtmlDocument(); 
doc.LoadHtml(html); 

if (doc.ParseErrors.Count() > 0) 
{ 
    //here you can ignore or do whatever you want 
} 
関連する問題