2017-01-27 4 views
0

HtmlAgilityPack을 사용하여 사용자가 입력 한 서식있는 텍스트를 삭제하고 유해한/원치 않는 텍스트를 제거합니다. 간단한 텍스트 또한 HTML 노드로 처리 될 때HtmlAgilityPack 문자열 문제 해결

제가

a<b, c>d 

를 입력하고 살균하려고하면하더라도 문제가 발생, 생성 된 출력

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

는 I가 사용되는 코드는

이었다
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, HAP에게 모든 '<'을 새 html 노드의 시작으로 취급하지 말라고 말하는 방법은 없습니다. 그러나 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 
}