尝试在Nokogiri的命名元素中查找元素时获得"Invlaid expression"



我使用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>节点。从这一点上,你可以折叠,纺锤或破坏你的心的内容。

相关内容

  • 没有找到相关文章

最新更新