Supprimer les balises "img" et "a" de node.InnerHtml

c# html html-agility-pack

Question

Je veux extraire uniquement le texte de mon HTML

var sb = new StringBuilder();
doc.LoadHtml(inputHTml);

foreach (var node in Doc.DocumentNode.ChildNodes)
{
    if (node.Name == "strong" || node.Name == "#text" 
        || node.Name == "br" || node.Name == "div" 
        || node.Name == "p" || node.Name != "img")
    {
        sb.Append(node.InnerHtml);
    }
}

maintenant dans mon node.InnerHtml est ce HTML:

1.

<br><div>text</div><div>, text</div><div>text<br>
<img src="http://example.com/55.jpg" alt="" title="" height="100">
<img src="http://example.com/45.jpg" alt="text" title="text" height="100"></div>

2

text&nbsp;text&nbsp;text.&nbsp;&nbsp;<a
 href="/content/essie-classics">text</a><br>
  <img> src="" alt="" title="" height="100"><img
 src="http://example.com/img_8862.jpg"
 alt="" title="" height="100"> 

Comment faire pour supprimer img et un tags?

img tag ne pas avoir la balise de fermeture

Réponse acceptée

Je ne suis pas sûr de comprendre ce que signifie le point n ° 2. Mais si vous voulez supprimer tous les éléments <img> d'un HtmlNode , vous pouvez essayer ceci:

var imgs = node.SelectNodes("//img");
foreach (var img in imgs)
{
    img.Remove();
}

Remove() supprimera HtmlNode de son parent. Cela fonctionne très bien pour moi pour supprimer des éléments <img> , même sans balise de fermeture.

METTRE À JOUR :

Vous pouvez utiliser cette expression XPath pour sélectionner tous les <img> et <a> éléments dans une requête unique:

node.SelectNodes("//*[self::img or self::a]");

Ensuite, vous pouvez parcourir le jeu de résultats une fois pour les supprimer.


Réponse populaire

Reportez-vous à ce noeud html remove (img) de l' exemple htmldocument . vous pouvez aussi faire comme ça:

       var sb = new StringBuilder();
doc.LoadHtml(inputHTml);

        foreach (var node in doc.DocumentNode.ChildNodes)
    {
        if (node.Name != "img" && node.Name!="a")
        {
            sb.Append(node.InnerHtml);
        }
    }


Related

Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow