【问题标题】:Why does Nokogiri::CSS.xpath_for return an array?为什么 Nokogiri::CSS.xpath_for 返回一个数组?
【发布时间】:2012-05-17 07:37:04
【问题描述】:

我正在查看 Nokogiri::CSS 的源代码,因为我需要将 CSS 选择器转换为 XPATH。运行示例代码并调用 xpath_for 方法后,我看到它返回了一个数组。为什么是这样? CSS 选择器是否有可能返回多个 xpath?

[18] pry(main)> Nokogiri::CSS.xpath_for 'div.divddy input:first'
=> ["//div[contains(concat(' ', @class, ' '), ' divddy ')]//input[position() = 1]"]

【问题讨论】:

    标签: ruby xpath css-selectors nokogiri


    【解决方案1】:

    CSS selector can contain multiple components separated by commas:

    5.选择器组

    以逗号分隔的选择器列表表示列表中每个单独选择器选择的所有元素的联合。

    例如:

    div.divddy input:first, div#where_is input.pancakes_house { /*...*/ }
    

    所以大概xpath_for 返回一个数组,以防你把它交给一个分组选择器。例如:

    >> Nokogiri::CSS.xpath_for 'div.divddy input:first, div#where_is input.pancakes_house'
    => ["//div[contains(concat(' ', @class, ' '), ' divddy ')]//input[position() = 1]", "//div[@id = 'where_is']//input[contains(concat(' ', @class, ' '), ' pancakes_house ')]"]
    

    请注意,在这种情况下,返回的数组长度为 2。

    【讨论】:

    • 或更简单的:Nokogiri::CSS.xpath_for "a,b" #=> ["//a", "//b"]
    • @Phrogz:嗯,是的,但是我不能在 Fargo 参考中滑倒;)
    • 很好的答案,非常感谢!强制参考(OT)youtube.com/watch?v=dJUvPZI3Cr4
    猜你喜欢
    • 2012-02-27
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 2020-08-07
    • 2020-07-07
    • 1970-01-01
    • 2021-11-12
    • 2012-05-04
    相关资源
    最近更新 更多