You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何移除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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:19:50