Можно ли получить номер строки элемента в AngleSharp? - PullRequest
1 голос
/ 21 марта 2020

Я собираю карту всех встроенных стилей для элементов в большом проекте. Я хотел бы показать номер строки, где они расположены, как в примере ниже.

Можно ли получить номер строки элемента в AngleSharp?

        foreach (var file in allFiles)
        {
            string source = File.ReadAllText(file.FullName);

            var parser = new HtmlParser();
            var doc = parser.ParseDocument(source);
            var items = doc.QuerySelectorAll("*[style]");

            sb.AppendLine($"{file.Name} - inline styles({items.Count()})");

            foreach (var item in items)
            {
                sb.AppendLine($"\t\tstyle (**{item.LineNumber}**): {item.GetAttribute("style")}");
            }
        }

1 Ответ

1 голос
/ 26 марта 2020

Да, это возможно.

Быстрый пример:

var parser = new HtmlParser(new HtmlParserOptions
{
    IsKeepingSourceReferences = true,
});
var document = parser.ParseDocument("<html><head></head><body><a href=\"example.com/?h=4&w=8\">&foo</a></body></html>");
document.QuerySelector("body").SourceReference?.Position.Dump();

Вывод выглядит следующим образом:

enter image description here

Важной частью является использование опции IsKeepingSourceReferences, так как это позволит вам использовать SourceReference. Некоторые (вставленные синтаксическим анализатором / spe c) элементы могут не иметь ссылки на источник, поэтому имейте в виду, что это может быть null.

...