¿Cómo puedo eliminar el texto comentado en html usando htmlagilitypack?

html-agility-pack

Pregunta

¿Es posible eliminar el texto comentado en html utilizando la biblioteca htmlagilitypack ? Actualmente estoy realizando un trabajo de migración de ASP a ASP.NET MVC y allí se usa Regex para esas cosas y solo quiero saber si puedo lograrlo utilizando htmlagilitypack antes de comenzar a probarlo.

Respuesta aceptada

Puede encontrar todos los nodos del tipo HtmlCommentNode (que representa un comentario HTML) y eliminarlo del documento. Pero tenga en cuenta que AgilityPack trata, por ejemplo, <!DOCTYPE html> como un nodo de comentarios. Por lo tanto, los nodos como este deben omitirse para su eliminación:

var doc = new HtmlDocument();
doc.LoadHtml(html);
var comments = doc.DocumentNode.DescendantNodes()
    .OfType<HtmlCommentNode>()
    .Where(c=> 
        !c.Comment.StartsWith("<!DOCTYPE", StringComparison.OrdinalIgnoreCase)
    ).ToList();

foreach (var comment in comments)
    comment.Remove();

var result = doc.DocumentNode.InnerHtml;


Related

Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow