我是Ruby on Rails的新手,并且正在使用Savon连接到SOAP服务。我得到如下回应:从Savon XML响应中获取价值?
<?xml version="1.0"?>
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<GetInformationsForCoordinatesResponse xmlns="http://tempuri.org/">
<GetInformationsForCoordinatesResult>ABC14522</GetInformationsForCoordinatesResult>
</GetInformationsForCoordinatesResponse>
</s:Body>
</s:Envelope>
我需要得到的GetInformationsForCoordinatesResult
值,即ABC14522
。
从莎翁的文档,我知道,萨翁用紫菜和引入nokogiri。在我的脚本中我包含了require 'nokogiri'
。
result = response.xpath("//GetInformationsForCoordinatesResult").first.inner_text
然而,当我跑我得到了错误代码:
NoMethodError: undefined method `inner_text' for nil:NilClass
有人能指出这可能是错在这里或者表现出更好的方法来提取我从响应所需的值?
你可以使用一个引入nokogiri或者,这是响应对象上的萨翁to_hash。你可以简单地遍历它(虽然我不记得它开始的级别)。响应[:Envelope] [:Body] [:Get ... Response] [:Get ... Result] –
您应该使用Savon的Response对象方法。你不需要用Nokogiri推出自己的产品 - Savon的Response对象会自动委托给它。另外,不需要它。 –
@MarkThomas - 好的,谢谢 - 我才意识到我可以叫response.doc的响应,然后我就能够使用从回答下面的代码让我的价值 –