#!/usr/bin/env ruby
# using a now defunct service
gem "savon", "~>2.0"
require "savon"
require "nokogiri"
require 'pp'
soap = Savon.client(
wsdl: "http://www.webservicex.net/globalweather.asmx?wsdl",
convert_request_keys_to: :camelcase,
log: false,
log_level: :debug,
pretty_print_xml: true
)
country = (ARGV[0] || 'Canada').capitalize
STDERR.print "Listing cities in #{country}\n"
response = soap.call(:get_cities_by_country,
:message => { :country_name => country },
)
result = response.to_hash[:get_cities_by_country_response][:get_cities_by_country_result]
doc = Nokogiri::XML(result)
# print doc.to_xml(indent: 2)
cities = doc.xpath("//Table")
cities.sort{|a,b| a.css('City').text <=> b.css('City').text}.each do |city|
# two variants to access elements
# print "#{(city>'City').text} (#{(city>'Country').text})\n"
print "\"#{city.css('City').text}\" (#{city.css('Country').text})\n"
end
Comments
0 B
|👍
/👎
0 B
|👍
/👎