如何使用HTML Agility更改所有图片的src属性?

时间:2018-08-11 10:15:56

标签: c# html html-agility-pack

我需要将所有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属性仍然指向相对路径!

1 个答案:

答案 0 :(得分:0)

您必须使用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

尝试一次可能对您有帮助