HtmlAgilityPack清理字符串问题

时间:2017-01-27 00:30:00

标签: html-agility-pack

我正在使用HtmlAgilityPack来清理用户输入的富文本并删除任何有害/不需要的文本。当简单文本也被视为html节点

时会出现问题

如果我输入

a<b, c>d

并尝试对其进行消毒,生成的输出为

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

我使用的代码是

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

var result = doc.DocumentNode.WriteTo();

我尝试在HtmlDocument(&#39; OptionCheckSyntax&#39; OptionAutoCloseOnEnd&#39;&#39; OptionWriteEmptyNodes&#39;)上设置不同的参数,以使文本不被视为节点但是没有用。这是一个已知问题还是可能的解决办法?

1 个答案:

答案 0 :(得分:0)

IMO,你无法告诉HAP不要对待每一个'&lt;'作为新的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
}