2

RoRアプリでSavonを使用しています。

これは私のサービスへの呼び出しです:

client = Savon::Client.new(MY_SOAP_CLIENT)

response = client.request :wsdl, :get_history do
    soap.body = "<startDate>2011-09-23</startDate><endDate>2011-09-24</endDate><userId>3</userId>"
end

そして、次の応答をXMLで取得しています。

<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">
<soapenv:Body xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\">
<resMessage xmlns=\"http://xxx-xxx.xxx.edu/xxx/\">
    <result>date=2011-09-23?amount=13.00?time=08:50:38?user=a00123?type=transfer</result>
    <result>date=2011-09-23?amount=3.00?time=08:51:27?user=a00123456?type=transfer</result>
    <result>date=2011-09-23?amount=20.00?time=09:49:00?user=a00123456?type=transfer</result>
</resMessage></soapenv:Body></soapenv:Envelope>

しかし、主な問題は、電話をかけるresponse.to_hashと、日付オブジェクトの部分しか取得できないことです。

=> [2011年9月23日金曜日、2011年9月23日金曜日、2011年9月23日金曜日]

これは日付には最適ですが、結果の他の部分(金額、時間、ユーザー、タイプ)が欠落しています。また、電話をかけresponse.bodyても同じ結果が得られます。

=> {:res_message => {:result => [2011年9月23日金曜日、2011年9月23日金曜日、2011年9月23日金曜日、2011年9月23日金曜日、2011年9月23日金曜日]、:@ xmlns => " http://xxx-xxx.xxx.edu/xxx/ "}、:" @ xmlns:soapenv "=>" http://schemas.xmlsoap.org/soap/envelope/ "}

ここでもSavonの問題の解決策は見つかりませんでした

前もって感謝します

4

1 に答える 1

1

あなたが使用することができます:

h = Hash.from_xml(response.to_xml)

そしてそれはあなたに正しいハッシュを与えるでしょう。

Ruby(RoR)XMLをハッシュしてビューに表示する

于 2011-09-24T22:26:22.477 に答える