Запрос AngleSharp Css для стиля элемента с использованием пути

#anglesharp

#AngleSharp

Вопрос:

Учитывая только таблицу стилей css, возможно ли проанализировать и запросить таблицу стилей, используя какой-то запрос пути, чтобы получить вычисленный стиль, аналогичный тому, что возвращается из IElement.ComputeCurrentStyle() ?

 var css = @"
<style>
   table { font-family:foobar }
   td { font-weight:bold }
</style>
";

var config = Configuration.Default.WithDefaultLoader().WithCss();
var context = BrowsingContext.New(config);
IDocument document = await context.OpenAsync(req => req.Content(css));
ICssStyleSheet sheet = document.GetStyleSheets().OfType<ICssStyleSheet>().First()
 

Возможно ли сделать что-то вроде sheet.GetComputedStyle("body>table>tbody>tr>td") извлечения a ICssStyleDeclaration ?

Ответ №1:

Получил ответ на это в отслеживателе проблем проекта github https://github.com/AngleSharp/AngleSharp.Css/issues/64

Ну, чтобы получить вычисляемый стиль, вам нужно иметь подключение к DOM. В конце концов, такие вещи, как селекторы, могут быть вычислены только в контексте доступной структуры DOM. Я предполагаю, что вам нужно «подделать» DOM, то есть, если вы видите какой-либо селектор (например, body> table> tbody> tr> td), создайте минимальный DOM, чтобы иметь возможность получить элемент, который удовлетворяет селектору. Затем используйте этот элемент, чтобы получить вычисляемый стиль, верно? Из коробки это невозможно, но я думаю, что это должно быть выполнимо, чтобы написать это.