如何使用Savon将属性添加到嵌套的XML数组?

时间:2015-08-27 22:24:00

标签: ruby xml savon

我使用 savon 2.2版来调用一些SOAP服务。对于简单的服务,一切正常。但是,一个服务具有复杂的结构,如下例所示,每个组都有重复组和属性:

    function selectHandler() {
        var selectedItem = chart.getSelection();
        if (selectedItem) {
            console.log(selectedItem);
        }
    }

    google.visualization.events.addListener(chart, 'select', selectHandler);

我当前的消息如下:

<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>

以上是使用这个逻辑产生的:

  <RequestControl>
    <requestID>6989668868</requestID>
  </RequestControl>
  <InquiryParam>
    <crmParam>1234567</crmParam>
    <attributes>
      <crmParam>
        <name>AccountNumber</name>
      </crmParam>
    </attributes>
  </InquiryParam>
  <InquiryParam>
    <crmParam>1</crmParam>
    <attributes>
      <crmParam>
        <name>History</name>
      </crmParam>
    </attributes>
  </InquiryParam>

我已经尝试使用基于savon和gyoku文档的 message = { :RequestControl => { :requestID => 6989668868 }, :InquiryParam => [ { :crmParam => { :content! => @account_number } , :attributes => { "crmParam" => {"name" => "AccountNumber"} } }, { :crmParam => { :content! => @history } , :attributes => { "crmParam" => {"name" => "History"} } } ] } 和类似的各种组合,但是在将XML格式化为示例时遇到了困难。我知道我可以通过将消息分配给:crmParam => { :content! => @account_number, :attributes => {'name'=>'AccountNumber'} }来强制消息,但这使得很难看到正在发生的事情。

有人可以建议修复xml代码中的属性吗?

1 个答案:

答案 0 :(得分:0)

我不确定Savon是否按照您的意愿处理Ruby数组,但以下脚本可以让您更好地了解自己可以做什么。

nil