我可以配置“ HtmlWeb”以使其自动转换html实体吗?

时间:2018-11-01 14:19:34

标签: c# html asp.net asp.net-core-2.0

我正在使用HtmlWeb中的HtmlAgilityPack对象来查询网站中的文本:

HtmlDocument lHmtlDoc = new HtmlWeb().Load("http://www.my-website.de");

var lValue1 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-1']").InnerHtml;
var lValue2 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-2']").InnerHtml;
// ... 100 further different values selected

我的问题:所有包含HTML实体的值,例如:“文本 文本&文本...”

我想将这些html实体转换为文本。我可以这样做:

lValue1 = System.Net.WebUtility.HtmlDecode(lValue1);
lValue2 = System.Net.WebUtility.HtmlDecode(lValue2);
// ... 100 more

但是此解决方案是一种不好的方法,因为代码变得不整洁,并且每个项目都要这样做。

是否可以配置HtmlWeb,使其自动转换html实体?

1 个答案:

答案 0 :(得分:0)

尝试为HtmlNode实施扩展方法

    public static class HtmlAgilityPackExtensions
{
    public static string InnerHtmlDecode(this HtmlNode htmlNode)
    {
        return System.Net.WebUtility.HtmlDecode(htmlNode.InnerHtml);
    }
}

使用

 var result2 = lHmtlDoc.DocumentNode.SelectSingleNode("//div[@class='item-1']").InnerHtmlDecode();