如何在不依赖HtmlAgilityPack的情况下使用.NET Fizzler?

时间:2015-04-04 11:51:59

标签: .net fizzler

Fizzler是HTML文档的W3C选择器库。 Nuget提供两个版本:一个取决于HtmlAgilityPack,一个不依赖于HtmlAgilityPack。

我只能找到文档& project that depends on HtmlAgilityPack的示例代码。我想利用没有这种依赖的那个,因为我总是希望减少我的依赖并保持简单。

在哪里可以找到不依赖于HtmlAgilityPack的Fizzler项目的文档/示例代码?

1 个答案:

答案 0 :(得分:5)

理解Fizzler的设计,设置和依赖关系的重要一点是要认识到CSS Selectors specification本身是根据文档树中元素的绑定模式来描述的。引用的大多数示例都是HTML文档树中的元素,这是CSS选择器的副产品,它构成了CSS的核心部分,并且所有这些技术在渲染网页时汇集在一起​​。这是最常见的应用程序。但是,如果使用CSS选择器作为使用元素和属性(和命名空间)模型的任意文档系统的查询机制,则可以将其应用于网页域之外。 stand-alone or base version of Fizzler就是这么做的。它包含通用位。 Fizzler.Systems.HtmlAgilityPack是一个具体库的API和HTML文档树模型之上的通用位的具体实现:HtmlAgilityPack

分离使任何人都可以使用Fizzler在另一个库之上实现CSS选择器(另一个库应该变得更新/流行)或文档树,因为可以重用CSS选择器语法分析器和没有知识的通用选择框架属于或与HtmlAgilityPack有关。

作为Fizzler的原始作者之一,我提供了HtmlAgilityPack的具体实现,HtmlAgilityPack是.NET Framework中最流行的HTML解析器和DOM库(可能至今仍然存在)。我希望社区将使用核心库为其他HTML库和文档系统提供实现。

你可以说HTML之外的CSS选择器的实用程序纯粹是学术性的,但Fizzler repo确实包含an implementation for WinForms,虽然是我的一个实验,但它证明了CSS选择器很可能是用于根据表单的名称(映射为ID)和属性(映射为属性)选择表单的控件。你可以想象为WinForms控件应用类似CSS的样式语言,并使用CSS选择器来定义哪些样式应用于哪些控件。

Fizzler的架构和设计是您找不到任何纯粹使用核心库的文档或示例的原因。对于在应用程序中寻求即时和实际使用的人来说,它可能过于通用。对于希望在其他库和元素树之上实现CSS选择的人来说,文档和示例最有意义。虽然这可能缺乏书面英语形式,但我希望Fizzler.Systems.HtmlAgilityPack(以及some other)可以作为一项优秀而简单的研究(其中的核心可以归结为少于200个)代码行。)

Fizzler.Systems.HtmlAgilityPack本身是通过使用两个标准来记录的:CSS选择器和Selectors API。后者会在HtmlAgilityPack中为HtmlNode添加QuerySelectorQuerySelectorAll,就像在浏览器中找到的那样。