如何移除HtmlAgilityPack生成的HTML属性中的转义反斜杠?
解决HtmlAgilityPack输出HTML属性引号带反斜杠的问题
问题根源
你遇到的问题是因为直接返回HtmlNode对象时,默认的ToString()方法采用了XML序列化规则,自动转义了属性中的引号;而你尝试的Replace和HttpUtility.HtmlDecode无效,是因为这些反斜杠并非HTML编码产生,而是序列化逻辑导致的格式问题。
解决方案
修改代码,使用HtmlNode.OuterHtml获取HTML字符串,并配置HtmlDocument的输出选项为HTML模式而非XML模式:
public string Get(string page) { var doc = new HtmlAgilityPack.HtmlDocument(); // 禁用XML输出模式,启用HTML原生输出规则 doc.OptionOutputAsXml = false; doc.LoadHtml(page); var content = doc.DocumentNode.SelectSingleNode("//html"); // 返回节点的HTML内容,而非直接返回HtmlNode对象 return content?.OuterHtml ?? string.Empty; }
说明
OptionOutputAsXml = false:让HtmlAgilityPack按照HTML规则生成输出,而非严格的XML规则,避免自动转义属性引号。content?.OuterHtml:直接获取节点对应的HTML字符串,替代默认的ToString()序列化逻辑,确保输出符合HTML格式要求。
这样修改后,输出的HTML属性引号就不会带有反斜杠,与你的期望输出一致。
内容的提问来源于stack exchange,提问作者Osama
相关产品推荐
相关产品推荐

