1

我正在尝试使用 Savon 解析 SOAP 响应。响应是 XML,但作为一个长字符串返回。如果我使用 #to_hash 整个 XML 对象仍然是一个字符串,现在存储在

hash[:response][:return]

这意味着它仍然是一个巨大的无法使用的混乱。

我的代码看起来像

response = soapClient.request(:get_sites_user_can_access) do
  soap.body = { :sessionid  => session[:login_response][:login_return],
                :eid        => user }
end

rep = response.to_hash

pp rep[:get_sites_user_can_access_response][:get_sites_user_can_access_return]

为了从响应中获取有用的信息,我错过了什么步骤?注意:不幸的是,由于它包含的信息,我无法发布 XML 响应,但它看起来像存储为字符串的整个 XML 文档。它的类是Nori::StringWithAttributes

4

1 回答 1

3

我能够获得所需的结果,但使用此文档解析 Nori 字符串(?) 。这似乎是一个不太理想的方法,但我意识到最后一个元素是一个哈希数组。所以它是散列,散列,带有一个散列数组。无论如何,这对我有用。将不胜感激有关如何减少丑陋和笨拙的建议。

response = soapClient.request(:get_sites_user_can_access) do
  soap.body = { :sessionid  => session[:login_response][:login_return],
                :eid        => user }
end

rep = response.to_hash[:get_sites_user_can_access_response][:get_sites_user_can_access_return]

hrep = Nori.parse(rep)

hrep[:list][:item].each { |item| pp item[:site_id] }
于 2012-07-02T21:20:54.430 回答