在 Savon 中解析日期和时间时丢失 xml 数据

发布于 2024-12-06 11:09:28 字数 1517 浏览 0 评论 0原文

我在我的 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 时,我只得到了 Date 对象部分:

=> [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问题

提前致谢

I'm using Savon in my RoR app.

This is my call to the service:

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

And I'm getting the next response in 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>

But, the main problem is when I call response.to_hash I only get the Date objects part:

=> [Fri, 23 Sep 2011, Fri, 23 Sep 2011, Fri, 23 Sep 2011]

This is great for the date, but the other part of the results are missing: amount, time, user and type. Also if I call response.body I keep getting the same results:

=> {:res_message=>{:result=>[Fri, 23 Sep 2011, Fri, 23 Sep 2011, Fri,
23 Sep 2011, Fri, 23 Sep 2011, Fri, 23 Sep 2011],
:@xmlns=>"http://xxx-xxx.xxx.edu/xxx/"},
:"@xmlns:soapenv"=>"http://schemas.xmlsoap.org/soap/envelope/"}

I didn't find the solution for this here nor Savon Issues

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

牵你的手,一向走下去 2024-12-13 11:09:28

你可以使用:

h = Hash.from_xml(response.to_xml)

这会给你一个正确的哈希值。

Ruby (RoR) XML 进行哈希处理,然后在视图中显示

You could use:

h = Hash.from_xml(response.to_xml)

and that would give you a correct hash.

Ruby (RoR) XML to hash and then show in views

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文