Потеря XML-данных при разборе даты и времени в Savon - PullRequest
2 голосов
/ 24 сентября 2011

Я использую Savon в своем приложении RoR.

Это мой звонок в сервис:

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, я получаю только часть объектов Date:

=> [пт, 23 сентября 2011 года, пт, 23 сентября 2011 года, пт, 23 сентября 2011 года]

Это отлично подходит для даты, но другая часть результатов отсутствует: сумма, время, пользователь и тип. Также, если я звоню response.body, я продолжаю получать те же результаты:

=> {: res_message => {: result => [пт, 23 сен 2011, пт, 23 сен 2011, пт, 23 сентября 2011 года, пт, 23 сентября 2011 года, пт, 23 сентября 2011 года], : @Xmlns => "http://xxx -xxx.xxx.edu / ххх /"}, : "@ XMLNS: soapenv" => "http://schemas.xmlsoap.org/soap/envelope/"}

Я не нашел решения для этого здесь, ни проблемы Savon

Заранее спасибо

1 Ответ

1 голос
/ 25 сентября 2011

Вы можете использовать:

h = Hash.from_xml(response.to_xml)

и это даст вам правильный хеш.

Ruby (RoR) XML для хеширования и последующего отображения в представлениях

...