代码之家  ›  专栏  ›  技术社区  ›  mshwf

如何使用HTML敏捷性更改所有图像src属性?

  •  -2
  • mshwf  · 技术社区  · 7 年前

    我需要将所有src属性转换为指向绝对路径而不是相对路径。我使用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.Text;
    

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

    1 回复  |  直到 7 年前
        1
  •  0
  •   er-sho    7 年前

    你必须使用 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();
    

    enter image description here

    enter image description here

    试一次也许它能帮你