如何以编程方式构建 AngleSharp CSS(或 HTML)DOM
How to build AngleSharp CSS (or HTML) DOM programmatically
我发现的所有 AngleSharp 示例和测试都是从解析 CSS 或 HTML 代码片段并访问 DOM 读数开始的。如何以编程方式构建 CSS(或 HTML5)文档并将结果输出作为字符串?
我想要这样的东西(伪代码):
var rule = new CssRule();
rule.Selector = ".my-class";
var style = new CssStyle("margin-top", "10px");
rule.add(style);
对于 HTML 你需要使用指定的 W3C API:
var context = BrowsingContext.New();
// get new document, not completely empty (has head and body)
var document = await context.OpenNewAsync();
var element = document.CreateElement("strong");
element.TextContent = "Hello World!";
document.Body.AppendChild(element);
因为这有点冗长,所以存在一些帮助程序(以扩展方法的形式)以使其更流畅。 CreateElement
也可以作为通用方法使用,如下所示:
var paragraph = document.CreateElement<IHtmlParagraphElement>();
不幸的是,CSS 目前不存在这样的 API(工厂方法或类似方法)。操纵它的唯一方法是使用字符串。这并不理想(我知道),我将添加有用的扩展方法以在将来提供此类功能。
我发现的所有 AngleSharp 示例和测试都是从解析 CSS 或 HTML 代码片段并访问 DOM 读数开始的。如何以编程方式构建 CSS(或 HTML5)文档并将结果输出作为字符串?
我想要这样的东西(伪代码):
var rule = new CssRule();
rule.Selector = ".my-class";
var style = new CssStyle("margin-top", "10px");
rule.add(style);
对于 HTML 你需要使用指定的 W3C API:
var context = BrowsingContext.New();
// get new document, not completely empty (has head and body)
var document = await context.OpenNewAsync();
var element = document.CreateElement("strong");
element.TextContent = "Hello World!";
document.Body.AppendChild(element);
因为这有点冗长,所以存在一些帮助程序(以扩展方法的形式)以使其更流畅。 CreateElement
也可以作为通用方法使用,如下所示:
var paragraph = document.CreateElement<IHtmlParagraphElement>();
不幸的是,CSS 目前不存在这样的 API(工厂方法或类似方法)。操纵它的唯一方法是使用字符串。这并不理想(我知道),我将添加有用的扩展方法以在将来提供此类功能。