Использование программирования в функциональном стиле для создания карты от меток до значений:
labels = Hash[
doc.css('span.label').map do |s|
[
s.text[0..-2], # get rid of the trailing colon
s.at_xpath('following-sibling::text()').content.strip
]
end
]
p labels
#=> {"Name"=>"PeterPan", "Tag"=>"Critical", "Priority"=>"223"}
Или, проще говоря, мы можем просто показать их:
doc.css('span.label').each{ |s| puts "#{s.text} -- #{s.next_sibling}" }
#=> Name: -- PeterPan
#=> Tag: -- Critical
#=> Priority: -- 223
Использование next_sibling
для поиска следующего текста и использование факта, что Nokogiri::XML::Text#to_s
дает текстовое содержимое.