
fizzler
A .NET library to select items from a node tree based on a CSS selector. The default implementation is based on HTMLAgilityPack and selects from HTML documents. There over 140 unit tests - see below for more information. The tests are based on the jQuery selector engine tests.
Fizzler supports .NET 2.0, 3.0, 3.5 and Mono.
Contributions are welcome in forms of:
- Increased selector support
- Implementation over an HTML-like hierarchical document model
- Re-factorings
- Improved tests
Examples
``` // Load the document using HTMLAgilityPack as normal var html = new HtmlDocument(); html.LoadHtml(@" Fizzler
CSS Selector Engine
");// Fizzler for HtmlAgilityPack is implemented as the // QuerySelectorAll extension method on HtmlNode
var document = html.DocumentNode;
// yields: [Fizzler
] document.QuerySelectorAll(".content");// yields: [Fizzler
,CSS Selector Engine
] document.QuerySelectorAll("p");// yields empty sequence document.QuerySelectorAll("body>p");
// yields [Fizzler
,CSS Selector Engine
] document.QuerySelectorAll("body p");// yields [Fizzler
] document.QuerySelectorAll("p:first-child"); ```Test Overview
View them here:
With_Non_Existant_ID_Descendant
With_Non_Existant_ID_Ancestor
With_Existing_ID_Descendant
With_Element
With_Element
Star_Prefix_With_Digit
Star_NthChild
Star
Single_Tag_Name_Matching_Multiple_Elements
Single_Tag_Name
Single
Parent_Class_Selector
Only_Child
NthChild_No_Prefix
Not_A_Child_ID
No_Prefix_With_Digit
Last_Child
First_Child
Empty
Element_Prefix_With_Digit
Element_NthChild
Element_Attr_Space_Separated_With_Double_Quotes
Element_Attr_Space_Separated
Element_Attr_Hyphen_Separated_With_Double_Quotes
Element_Attr_Hyphen_Separated
Element_Attr_Exists
Element_Attr_Exists
Element_Attr_Equals_With_Double_Quotes
Element_Attr_Equals
Descendant
CommaSupport_With_Pre_Post_Pended_Space
CommaSupport_With_Pre_Pended_Space
CommaSupport_With_Post_Pended_Space
CommaSupport_With_No_Space
Comma_Child_And_Adjacent
Child_With_Spaces
Child_With_Pre_Space
Child_With_Pre_And_Post_Space
Child_With_Post_Space
Child_With_No_Space
Child_With_Class
Child_No_Spaces
Child_ID
Chained
Basic_Selector
Basic_Positive_Precedence_With_Same_Tags
Basic_Positive_Precedence_Two_Tags
Basic_Positive_Precedence_Three_Tags
Basic_Negative_Precedence
Basic
All_GrandChildren
All_Descendants_Of_ID
All_Children_of_ID_with_no_children
All_Children_Of_ID
All_Children
Adjacent_With_Pre_Space
Adjacent_With_Pre_And_Post_Space
Adjacent_With_Post_Space
Adjacent_With_No_Space
Adj_Spaces
Adj_No_Spaces