我正在查看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]"]
答案 0 :(得分:5)
A 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。