1

Savonを使用してSOAP応答を解析しようとしています。応答はXMLですが、1つの長い文字列として返されます。#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 に答える