Comment supprimer les commentaires de HTML à l'aide de Agility Pack sans perdre DOCTYPE

html-agility-pack

Question

J'essaie de supprimer le contenu inutile de HTML. Plus précisément, je veux supprimer les commentaires. J'ai trouvé une très bonne solution ( saisir des méta-tags et des commentaires à l'aide de HTML Agility Pack ), mais DOCTYPE est traité comme un commentaire et est donc supprimé avec les commentaires. Comment puis-je améliorer le code ci-dessous pour m'assurer que le DOCTYPE est préservé?

var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(htmlContent);
var nodes = htmlDoc.DocumentNode.SelectNodes("//comment()");
if (nodes != null)
{
    foreach (HtmlNode comment in nodes)
    {
        comment.ParentNode.RemoveChild(comment);
    }
}

Réponse acceptée

Vérifiez que le commentaire ne commence pas par DOCTYPE

  foreach (var comment in nodes)
  {
     if (!comment.InnerText.StartsWith("DOCTYPE"))
         comment.ParentNode.RemoveChild(comment);
  }

Réponse populaire

doc.DocumentNode.Descendants()
 .Where(n => n.NodeType == HtmlAgilityPack.HtmlNodeType.Comment)
 .ToList()
 .ForEach(n => n.Remove());

cela enlèvera tous les commentaires du document



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