鉴于我有以下代码:
ENDPOINT = 'http://api.eventful.com'
API_KEY = 'PbFVZfjTXJQWrnJp'
def get_xml(url, options={})
compiled_url = "#{ENDPOINT}/rest#{url}" << "?app_key=#{API_KEY}&sort_order=popularity"
options.each { |k, v| compiled_url << "&#{k.to_s}=#{v.to_s}" }
REXML::Document.new((Net::HTTP.get(URI.parse(URI.escape(compiled_url)))))
end
def event_search(location, date)
get_xml('/events/search',
:location => "#{location}, United Kingdom",
:date => date
)
end
我们访问格式REXML::Document
如下的 XML 数据:
events = event_search('London', 'Today').elements
我们可以像这样访问这些元素(这会打印事件中的所有标题):
events.each('search/events/event/title') do |title|
puts title.text
end
我正在使用的 XML 可以在这里找到。我希望这个构造一个像这样的哈希:
{"Title1" => {:title => 'Title1', :date => 'Date1', :post_code => 'PostCode1'},
"Title2" => {:title => 'Title2', :date => 'Date2', :post_code => 'PostCode2'}}
使用events.each('search/events/event/title')
、events.each('search/events/event/date')
和时events.each('search/events/event/post_code')
。
所以我想从上面包含的 URL 提供的 XML 中创建一个 Hash。谢谢!