我使用Nokogiri与Ruby on Rails 4.2.7。我怎么说,我想找到所有的"选项"元素与名称为"范围"的另一个元素?我试着
response = http.request(req)
doc = Nokogiri::HTML(response.body)
…
options = doc.xpath(“//range option")
但是它给了我错误
Error during processing: Invalid expression: //range option
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:165:in `evaluate'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:165:in `block in xpath'
/Users/davea/.rvm/gems/ruby-2.3.0/gems/nokogiri-1.6.8/lib/nokogiri/xml/searchable.rb:156:in `map'
您想要什么并不完全清楚,但这可能会有所帮助。
冥想:
require 'nokogiri'
doc = Nokogiri::XML('<root><range><option>1</option><option>2</option></range></root>')
doc.search('range option') # => [#<Nokogiri::XML::Element:0x3ffc64544e1c name="option" children=[#<Nokogiri::XML::Text:0x3ffc64544c3c "1">]>, #<Nokogiri::XML::Element:0x3ffc64544a5c name="option" children=[#<Nokogiri::XML::Text:0x3ffc6454487c "2">]>]
doc.search('range option').map(&:to_xml) # => ["<option>1</option>", "<option>2</option>"]
search
将遍历文档并返回选择器的所有匹配元素。CSS range option
查找包含<option>
标签的所有<range>
,并返回NodeSet中的<option>
节点。从这一点上,你可以折叠,纺锤或破坏你的心的内容。