I don't like some of the design decisions made in HtmlAgilityPack:
SelectNodes
, if no nodes are found, it returns null
rather than an empty set, so you can't just foreach
over it without a null check.node.SelectNodes
it actually searches from the document root unless you use descendant::
which is not obvious nor expected behavior at all, IMO.HtmlDocument.Load
doesn't return the root node, which is what you'd want 99% of the time, I thinkYou might disagree with that of course, but that's not the point. I'm looking for something different. Something that behaves a little more expected, or something that uses jQuery syntax would be even better. Suggestions?
Started project called SharpQuery
Currently supports ID, class, tag, and attribute selectors.
a
a[href]
a[href^=http://stackoverflow.com]
.class
#id
Update: I'm not maintaining this project, sorry. CsQuery has recent updates (as of July 2013), but I don't have any experience using it.
If you're just parsing the html, another option might be SgmlReader. If you're modifying the html, not so much. Don't recall how it behaves with respect to the issues you raised,but it worth checking out.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With