Как получить содержимое узла XML с использованием XPath и Nokogiri - PullRequest
8 голосов
/ 21 марта 2011

У меня есть такой код:

@doc = Nokogiri::HTML(open(url)
@doc.xpath(query).each do |html|

  puts html # how get content of a node
end

Как получить содержимое узла вместо чего-то вроде этого:

<li class="stat">

Ответы [ 2 ]

12 голосов
/ 21 марта 2011

Это пример Синопсиса в файле README для Nokogiri, показывающий один из способов сделать это с помощью CSS, XPath или гибрида:

require 'nokogiri'
require 'open-uri'

# Get a Nokogiri::HTML:Document for the page we’re interested in...

doc = Nokogiri::HTML(open('http://www.google.com/search?q=tenderlove'))

# Do funky things with it using Nokogiri::XML::Node methods...

####
# Search for nodes by css
doc.css('h3.r a.l').each do |link|
  puts link.content
end

####
# Search for nodes by xpath
doc.xpath('//h3/a[@class="l"]').each do |link|
  puts link.content
end

####
# Or mix and match.
doc.search('h3.r a.l', '//h3/a[@class="l"]').each do |link|
  puts link.content
end
5 голосов
/ 21 марта 2011

См. html.content или html.text.

Для получения дополнительной информации см. Документацию Node .

...