DOCTYPE을 잃지 않고 민첩성 팩을 사용하여 HTML에서 주석을 제거하는 방법

html-agility-pack

문제

HTML에서 불필요한 콘텐츠를 제거하려고합니다. 특히 코멘트를 삭제하고 싶습니다. 나는 DOCTYPE이 주석으로 취급되어 주석과 함께 제거되는 꽤 좋은 솔루션 ( HTML 애자일 팩을 사용하여 메타 태그와 주석을 얻음)을 발견했다. 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는 합법적입니까? 예, 이유를 알아보십시오.