如何使用Agility Pack從HTML中刪除註釋而不會丟失DOCTYPE

html-agility-pack

我試圖從HTML中刪除不必要的內容。具體來說,我想刪除評論。我發現了一個非常好的解決方案( 使用HTML Agility Pack抓取元標記和註釋 )但是DOCTYPE被視為註釋,因此隨註釋一起刪除。如何改進下面的代碼以確保保留DOCTYPE?

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

一般承認的答案

檢查評論是否不以DOCTYPE開頭

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

熱門答案

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

這將剝離文檔中的所有註釋



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因