Advertisement
sroller

Savon + Nokogiri

Oct 19th, 2018
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.96 KB | None | 0 0
  1. #!/usr/bin/env ruby
  2.  
  3. # using a now defunct service
  4.  
  5. gem "savon", "~>2.0"
  6. require "savon"
  7. require "nokogiri"
  8. require 'pp'
  9.  
  10. soap = Savon.client(
  11.   wsdl: "http://www.webservicex.net/globalweather.asmx?wsdl",
  12.   convert_request_keys_to: :camelcase,
  13.   log: false,
  14.   log_level: :debug,
  15.   pretty_print_xml: true
  16. )
  17.  
  18. country = (ARGV[0] || 'Canada').capitalize
  19.  
  20. STDERR.print "Listing cities in #{country}\n"
  21. response = soap.call(:get_cities_by_country,
  22.                      :message => { :country_name => country },
  23.                     )
  24. result = response.to_hash[:get_cities_by_country_response][:get_cities_by_country_result]
  25. doc = Nokogiri::XML(result)
  26. # print doc.to_xml(indent: 2)
  27. cities = doc.xpath("//Table")
  28. cities.sort{|a,b| a.css('City').text <=> b.css('City').text}.each do |city|
  29.   # two variants to access elements
  30.   # print "#{(city>'City').text} (#{(city>'Country').text})\n"
  31.   print "\"#{city.css('City').text}\" (#{city.css('Country').text})\n"
  32. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement