HtmlAgilityPack 的替代品?
我不喜欢 HtmlAgilityPack 中的一些设计决策:
- 使用
SelectNodes
时,如果未找到节点,它会返回null
而不是空集,因此您可以不仅仅是在没有空检查的情况下对其进行foreach
。 - 当尝试使用
node.SelectNodes
选择子项时,它实际上从文档根目录进行搜索,除非您使用descendant::
,这根本不是明显的,也不是预期的行为,IMO。 HtmlDocument.Load
不会返回根节点,这在 99% 的情况下都是您想要的,我想
您当然可能不同意这一点,但这不是重点。我正在寻找一些不同的东西。一些行为更符合预期的东西,或者使用 jQuery 语法的东西会更好。建议?
I don't like some of the design decisions made in HtmlAgilityPack:
- When using
SelectNodes
, if no nodes are found, it returnsnull
rather than an empty set, so you can't justforeach
over it without a null check. - When trying to select children with
node.SelectNodes
it actually searches from the document root unless you usedescendant::
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 think
You 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?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
已启动名为 SharpQuery 的项目
目前支持 ID、类、标签和属性选择器。
更新:我不会维护这个项目,抱歉。 CsQuery 最近有更新(截至 2013 年 7 月),但我没有任何使用它的经验。
Started project called SharpQuery
Currently supports ID, class, tag, and attribute selectors.
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.
如果您只是解析 html,另一个选择可能是 SgmlReader。
如果你要修改 html,则不需要那么多。
不记得它对您提出的问题的表现如何,但值得检查一下。
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.