Come posso rimuovere il testo commentato in html usando htmlagilitypack

html-agility-pack

Domanda

È possibile rimuovere il testo commentato in html usando la libreria htmlagilitypack ? Attualmente sto facendo del lavoro di migrazione da ASP a ASP.NET MVC e lì è usato Regex per quelle cose e voglio solo sapere che posso ottenerlo usando htmlagilitypack prima di iniziare a provarlo.

Risposta accettata

È possibile trovare tutti i nodi di tipo HtmlCommentNode (che rappresenta un commento HTML) e rimuoverlo dal documento. Nota, AgilityPack tratta ad esempio <!DOCTYPE html> come nodo di commento. Quindi i nodi come questo dovrebbero essere saltati per la cancellazione:

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;



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché