Remplacer les images par un autre pack d'agilité HTML en texte

asp.net c# html-agility-pack

Question

Je dois analyser le HTML pour les images et remplacer ces balises par une nouvelle balise contenant uniquement le texte contenu dans la variable de remplacement. Quelqu'un peut-il montrer comment faire cela avec linq et l'utilisation standard?

J'ai utilisé un exemple linq maintenant pour remplacer les paragraphes. Mais, je reçois une erreur de lecture seule.

    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";
    }

Aussi, y a-t-il un moyen facile de le transférer en texte? Ie sortie sous forme de chaîne

C'est ce que j'ai qui ne marche pas

    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";
    }

Réponse acceptée

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



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