HtmlAgilityPack 的替代品?

发布于 2024-09-18 08:09:39 字数 451 浏览 8 评论 0原文

我不喜欢 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 returns null rather than an empty set, so you can't just foreach over it without a null check.
  • When trying to select children with 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 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秋凉 2024-09-25 08:09:39

已启动名为 SharpQuery 的项目

目前支持 ID、类、标签和属性选择器。

a
a[href]
a[href^=http://stackoverflow.com]
.class
#id

更新:我不会维护这个项目,抱歉。 CsQuery 最近有更新(截至 2013 年 7 月),但我没有任何使用它的经验。

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.

早乙女 2024-09-25 08:09:39

如果您只是解析 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文