Sostituisci le immagini con il pacchetto agilità HTML di testo alternativo

asp.net c# html-agility-pack

Domanda

Ho bisogno di analizzare l'HTML per le immagini e sostituire quei tag con un nuovo tag che ha solo il testo che è contenuto nell'alternativa. Qualcuno può mostrare come farlo con sia l'uso standard che linq?

Sto usando un esempio di linq ora per sostituire i paragrafi. Ma sto ricevendo un errore di sola lettura.

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);      
    IEnumerable<HtmlNode> paragraphs = doc.DocumentNode.DescendantNodes().Where(p => p.Name.ToLower() == "p");
    foreach (HtmlNode p in paragraphs)
    {
        p.InnerText = "Hello World";
    }

C'è anche un modo semplice per trasferirlo in testo? Vale a dire uscita come stringa

Questo è quello che ho che non funziona

    HtmlDocument doc = new HtmlDocument();
    doc.LoadHtml(html);      
    IEnumerable<HtmlNode> paragraphs = doc.DocumentNode.DescendantNodes().Where(p => p.Name.ToLower() == "p");
    foreach (HtmlNode p in paragraphs)
    {
        p.InnerText = "Hello World";
    }

Risposta accettata

var images = doc.DocumentNode.SelectNodes("//img");
if (images != null)
{
    foreach (HtmlNode image in images)
    {
        var alt = image.GetAttributeValue("alt", "");
        var nodeForReplace = HtmlTextNode.CreateNode(alt);
        image.ParentNode.ReplaceChild(nodeForReplace, image);
    }
}

var sb = new StringBuilder();
using (var writer = new StringWriter(sb))
{
    doc.Save(writer);
}



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é