So entfernen Sie Kommentare aus HTML mit Agility Pack ohne DOCTYPE zu verlieren

html-agility-pack

Frage

Ich versuche, unnötigen Inhalt aus HTML zu entfernen. Insbesondere möchte ich Kommentare entfernen. Ich fand eine ziemlich gute Lösung ( Ergreifung von Meta-Tags und Kommentaren mit HTML Agility Pack ), aber der DOCTYPE wird als Kommentar behandelt und daher zusammen mit den Kommentaren entfernt. Wie kann ich den folgenden Code verbessern, um sicherzustellen, dass der DOCTYPE beibehalten wird?

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

Akzeptierte Antwort

Überprüfen Sie, ob der Kommentar nicht mit DOCTYPE

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

Beliebte Antwort

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

Dadurch werden alle Kommentare aus dem Dokument entfernt



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum