¿Cómo cambiar todos los atributos src de las imágenes usando HTML Agility?

c# html html-agility-pack

Pregunta

Necesito convertir todos los atributos src para que apunten a la ruta absoluta en lugar de la ruta relativa. Intenté esto usando 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;

¡Pero los atributos src todavía apuntan a la ruta relativa!

Respuesta aceptada

htmlDoc.DocumentNode.WriteTo() utilizar el método htmlDoc.DocumentNode.WriteTo() para reflejar sus cambios en su html original

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

Salida:

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Inténtalo una vez te puede ayudar



Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué