Come modificare tutti gli attributi src di immagini usando l'Agilità HTML?

c# html html-agility-pack

Domanda

Devo convertire tutti gli attributi src in modo che puntino al percorso assoluto anziché al percorso relativo. Ho provato questo usando l'Agilità 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;

Ma gli attributi src indicano ancora il percorso relativo!

Risposta accettata

Devi usare il metodo htmlDoc.DocumentNode.WriteTo() per riflettere le tue modifiche nel tuo html originale

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

Produzione:

inserisci la descrizione dell'immagine qui

inserisci la descrizione dell'immagine qui

Prova una volta può aiutarti



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché