【问题标题】:How to change all images src attributes using HTML Agility?如何使用 HTML Agility 更改所有图像的 src 属性?
【发布时间】:2019-01-18 18:52:18
【问题描述】:

我需要将所有 src 属性转换为指向绝对路径而不是相对路径。我使用 HTML Agility 进行了尝试:

string html = "<body><div><img src=\"/folder/a.png\"/></div><div> <img src=\"/folder/b.png\"/></div></body>";
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
foreach (var node in htmlDoc.DocumentNode.SelectNodes("//img"))
{
   var src = node.Attributes[@"src"].Value;
   if (src.StartsWith("/"))
      node.SetAttributeValue("//src", "www.abc.xyz" + src);
}
var newHtml = htmlDoc.Text;

但是src属性还是指向相对路径!

【问题讨论】:

    标签: c# html html-agility-pack


    【解决方案1】:

    您必须使用htmlDoc.DocumentNode.WriteTo() 方法来反映您在原始html中的更改

    string html = "<body><div><img src=\"/folder/a.png\"/></div><div> <img src=\"/folder/b.png\"/></div></body>";
    var htmlDoc = new HtmlDocument();
    htmlDoc.LoadHtml(html);
    foreach (var node in htmlDoc.DocumentNode.SelectNodes("//img"))
    {
        var src = node.Attributes[@"src"].Value;
        if (src.StartsWith("/"))
            node.SetAttributeValue("src", "www.abc.xyz" + src);
    }
    
    var newHtml = htmlDoc.DocumentNode.WriteTo();
    

    输出:

    尝试一次可能对你有帮助

    【讨论】:

    • @mshwf,查看答案可能对您有帮助:)
    猜你喜欢
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 2013-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多