ruby-on-rails – 在与Savon的SOAP调用中与Nokogiri一起阅读回复

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 在与Savon的SOAP调用中与Nokogiri一起阅读回复前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我和萨文打了一个肥皂电话.这工作正常,并给予
以下回复
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://
  4. schemas.xmlsoap.org/soap/envelope/">
  5. <soap:Body>
  6. <GetTop10Response xmlns="http://www.kirupafx.com">
  7. <GetTop10Result>
  8. <string>string</string>
  9. <string>string</string>
  10. </GetTop10Result>
  11. </GetTop10Response>
  12. </soap:Body>
  13. </soap:Envelope>

现在我想从响应中取出所有字符串元素.但
我无法让它发挥作用.

  1. def query(params=nil)
  2.  
  3. client = Savon::Client.new do
  4. wsdl.document = "http://www.kirupafx.com/WebService/TopMovies.asmx?wsdl"
  5. end
  6.  
  7. response = client.request :get_top10
  8.  
  9. if response.success?
  10. xml = Nokogiri::XML(response.to_xml)
  11. print "Until here oké!"
  12. xml.search('//GetTop10Result').each do |result|
  13. print "How are you Ruby?"
  14. @result[result.at('string').inner_text] = result.at('string').inner_text
  15. end
  16. else
  17. raise "Error!"
  18. end

但是他从来没有打印过我漂亮的“你是红宝石怎么样?”有人可以帮忙吗?
我?我做错了什么?

解决方法

你可以这样,但这不是处理这样的问题的最好方法!您可能有使用Nokogiri和XML的经验,但它更容易使用.to_hash这样.
  1. def query
  2. client = Savon::Client.new do
  3. wsdl.document = "http://www.kirupafx.com/WebService/TopMovies.asmx?wsdl"
  4. end
  5. response = client.request(:get_top10)
  6. response.to_hash[:get_top10_response][:get_top10_result] if response.success?
  7. false
  8. end

猜你在找的Ruby相关文章