【问题标题】:In Tritium, what are the differences between CSS and XPath selectors?在 Tritium 中,CSS 和 XPath 选择器有什么区别?
【发布时间】:2013-05-30 22:23:42
【问题描述】:

两种不同选择器的优缺点是什么?

我应该使用一个而不是另一个吗?

【问题讨论】:

    标签: xpath css-selectors moovweb tritium


    【解决方案1】:

    我认为这主要是用户偏好的问题。

    要选择所有 <p> 元素的第一个子元素,您可以:

    • $("//p/*[1]") 在 Xpath 中
    • $$("p > *:first-child") 在 CSS 中

    我更喜欢使用 Xpath,但 YMMV。

    请注意,在内部,所有 CSS 选择器都转换为 Xpath。例如,选择器$$("#one") 将被转换为$(".//*[id='one']")

    【讨论】:

    • 我在某处读到 CSS 选择器有时更快,但我认为这是在客户端 DOM 操作上。 Moovweb SDK 中是否有任何关于选择器性能的指标?
    • 正如 Aaron 在此回复中所说,CSS 选择器和 Xpath 选择器性能的差异可以忽略不计。在这两种情况下,您都可以确定搜索范围以确保更快的性能。
    【解决方案2】:

    只是一些注意事项:

    • XPath 中的索引从 1 开始,所以它是 //p/*[1]
    • Tritium 中的 CSS 选择器允许您为选择器添加前缀 >,如 $$("> p > :first-child");这将被转换为范围搜索(即./p/*[1]
    • 由于 CSS 选择器(当前)动态转换为 XPath,因此与使用直接 XPath 相比,性能会受到轻微影响

    【讨论】:

    • 为什么 CSS 选择器被转换为 XPath?
    • 因为目前 Tritium 的实现使用的是 LibXML,它只支持 XPath 选择器。
    猜你喜欢
    • 1970-01-01
    • 2011-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-02-23
    • 2011-08-02
    • 2013-06-27
    • 1970-01-01
    相关资源
    最近更新 更多