Я пытаюсь удалить ненужный контент из 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); } }
doc.DocumentNode.Descendants() .Where(n => n.NodeType == HtmlAgilityPack.HtmlNodeType.Comment) .ToList() .ForEach(n => n.Remove());
это исключит все комментарии из документа
Убедитесь, что комментарий не начинается с DOCTYPE
DOCTYPE
foreach (var comment in nodes) { if (!comment.InnerText.StartsWith("DOCTYPE")) comment.ParentNode.RemoveChild(comment); }