Comment changer tous les attributs d'image src en utilisant HTML Agility?

c# html html-agility-pack

Question

J'ai besoin de convertir tous les attributs src pour qu'ils pointent vers le chemin absolu au lieu du chemin relatif. J'ai essayé ceci en utilisant 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;

Mais les attributs src indiquent toujours le chemin relatif!

Réponse acceptée

Vous devez utiliser la méthode htmlDoc.DocumentNode.WriteTo() pour refléter vos modifications dans votre htmlDoc.DocumentNode.WriteTo() HTML d'origine.

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();

Sortie:

entrez la description de l'image ici

entrez la description de l'image ici

Essayez une fois peut-il vous aider




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi