我正在使用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实体?
答案 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();