Ruby 如何使用Savon向嵌套的XML数组添加属性?
我正在使用SavonVersion2.2调用一些SOAP服务。对于简单的服务,一切正常。但是,有一个服务具有如下示例所示的复杂结构,每个组上都有重复组和属性:Ruby 如何使用Savon向嵌套的XML数组添加属性?,ruby,xml,savon,Ruby,Xml,Savon,我正在使用SavonVersion2.2调用一些SOAP服务。对于简单的服务,一切正常。但是,有一个服务具有如下示例所示的复杂结构,每个组上都有重复组和属性: <sch:RequestControl> <sch:requestID>6989668868</sch:requestID> </sch:RequestControl> <sch:InquiryParam> <sch:crmParam name="AccountNumb
<sch:RequestControl>
<sch:requestID>6989668868</sch:requestID>
</sch:RequestControl>
<sch:InquiryParam>
<sch:crmParam name="AccountNumber">1234567</sch:crmParam>
<sch:crmParam name="History">1</sch:crmParam>
</sch:InquiryParam>
基于savon和gyoku文档,我尝试了使用:crmParam=>{:content!=>@account\u number,:attributes=>{'name'=>'AccountNumber'}}
和类似的组合,但在将XML格式化为类似示例时遇到了困难。我知道我可以通过将消息分配给xml
来强制执行该消息,但这使得很难看到发生了什么
有人能建议一种修复方法,将属性放在
crmParam
标记中吗?我不确定Savon是否能按照您的意愿处理Ruby数组,但下面的脚本应该能让您更好地了解您可以做些什么
require 'savon'
c = Savon.client(endpoint: "http://www.example.com",
namespace: "urn:ns.example.com",
log: true,
log_level: :debug,
pretty_print_xml: true)
r = c.call(:call,
:message => {
:InquiryParam => [
{"crmParam" => 123,
:attributes! => { "crmParam" => { "name" => "AccountNumber" }}},
{"crmParam" => 456,
:attributes! => { "crmParam" => { "name" => "history" }}}
]
}
message = { :RequestControl =>
{ :requestID => 6989668868 },
:InquiryParam => [
{ :crmParam => { :content! => @account_number } ,
:attributes => { "crmParam" => {"name" => "AccountNumber"} } },
{ :crmParam => { :content! => @history } ,
:attributes => { "crmParam" => {"name" => "History"} } } ]
}
require 'savon'
c = Savon.client(endpoint: "http://www.example.com",
namespace: "urn:ns.example.com",
log: true,
log_level: :debug,
pretty_print_xml: true)
r = c.call(:call,
:message => {
:InquiryParam => [
{"crmParam" => 123,
:attributes! => { "crmParam" => { "name" => "AccountNumber" }}},
{"crmParam" => 456,
:attributes! => { "crmParam" => { "name" => "history" }}}
]
}