Как получить все теги комментариев из HTML-строки, используя AngleSharp?

Как можно найти все теги комментариев из строки HTML, используя AngleSharp. Комментарии могут быть как одиночными, так и несколькими строками.

<!-- Single line comment. -->

<!-- Multi-
ple line comment.
Lots      '""' '  "  ` ~ |}{556             of      !@#$%^&*())        lines
in
this
comme-
nt! -->

1 ответ

Решение

Вы можете получить теги комментариев, используя Descendents метод расширения из AngleSharp.Extensions.ApiExtensions, Комментарии не являются элементами, поэтому вы не можете запрашивать их, как обычно, но этот метод расширения позволяет вам получать узлы определенного типа.

IEnumerable<IComment> comments = document.Descendents<IComment>();

Пример:

using AngleSharp;
using AngleSharp.Parser.Html;
using AngleSharp.Dom; // For IComment
using AngleSharp.Extensions; // For Descendents

var parser = new HtmlParser();
var source = @"<!-- Single line comment. -->
               <!-- Multi-
               ple line comment.
               Lots      '""""' '  ""  ` ~ |}{556             of      !@#$%^&*())        lines
               in
               this
               comme -
                nt!-->";
var document = parser.Parse(source);

// Get all comment nodes
IEnumerable<IComment> comments = document.Descendents<IComment>();

// Get the text in the comment nodes
foreach (IComment comment in comments)
{
    var textValue = comment.TextContent;
    ...
}
Другие вопросы по тегам