Доступ к результатам запроса XPath, когда все, что возвращается, это объект LibXML в Ruby - PullRequest
1 голос
/ 02 апреля 2012
require 'net/http'; require 'libxml'

data = Net::HTTP.get_response(URI.parse('http://myurl.com')).body
source = LibXML::XML::Parser.string(data).parse

tables = source.find('//table')

возвращает

 => #<LibXML::XML::XPath::Object:0x1f4f50>

Как мне получить к этому доступ? Там как минимум 11 столов.

p.s. Я не могу использовать Nokogiri на моей текущей установке.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Вы можете получить доступ к результатам XPath, запросив элемент узла следующим образом.

require 'net/http'
require 'libxml'

# Sample text with a few tables
xml=<<END
<html>
  <table id="t1"><tr><td>foo</td></tr></table>
  <table id="t2"><tr><td>goo</td></tr></table>
  <table id="t3"><tr><td>hoo</td></tr></table>
</html>
END

# Parse the text into tables
source = LibXML::XML::Parser.string(xml).parse
tables = source.find('//table')

# The XPath #each iterator does each XML node
tables.each {|node|
  puts node["id"] 
}

Если у вас более старая версия libxml:

- puts node["id"] 
+ puts node.property("id")
0 голосов
/ 03 апреля 2012

Успей разобраться с Hpricot!

...