Savon: 肥皂体中的重复元素

创建于 2010-03-07  ·  5评论  ·  资料来源: savonrb/savon

您好,感谢您之前的帮助。 我试图弄清楚如何让肥皂体处理重复的元素。 喜欢。

 <createAccount> 
   <param>[email protected]</param> 
   <key>TextMailbox</key> 
   <param> 
     <subKey key="RealName">John Doe</subKey> 
     <subKey key="Password">soappass</subKey> 
   </param> 
 </createAccount> 

我发现很难插入重复的参数,因为它是一个哈希。 我应该手动执行此操作吗?

-乔

所有5条评论

嘿乔,

您可以将数组用于重复元素。 这很自然。 例如:

{ :key => "TextMailbox",
  :param => [
    "[email protected]",
    { :subKey => ["John Doe", "soappass"]}
  ]
}

但是您的 subKey 标签的属性有问题。 通常要将属性分配给哈希值,您可以执行以下操作:

{ :subKey => "John Doe", :attributes! => { :subKey => { :key => "RealName" } } }
# translation: <subKey key="RealName">John Doe</subKey>

目前我担心这对重复元素不起作用,我已经在考虑如何解决这个问题。 现在,您可以使用 builder 执行以下操作:

xml = Builder::XmlMarkup.new
xml.tag! :subKey, { :key => "RealName" }, "John Doe"
xml.tag! :subKey, { :key => "Password" }, "soappass"

{ :key => "TextMailbox",
  :param => [
    "[email protected]",
    xml.target!
  ]
}

顺便提一句。 您可以通过在哈希上调用to_soap_xml来进行试验(尝试 irb)。 它是 savon 附带的核心扩展。

向开发分支添加了对此的支持:http: //github.com/rubiii/savon/commit/e8dd4fea1d8ab4d0d451fdfa254960c9a749b921

在下一个版本中,您将能够:

{ :key => "TextMailbox",
  :param => [
    "[email protected]",
    { :subKey => ["John Doe", "soappass"],
      :attributes! => { :subKey => { :key => ["RealName", "Password"] } } }
  ]
}

这将为您提供与原始消息完全相同的 xml。

已发布的 0.7.6 版包含此问题的修复程序。 请更新。

+1 @rubiii

我对数组值有同样的问题,但是在数组内部我需要再次传入哈希值,该哈希值再次被覆盖

result = client.call(:sales_order_list, message: {
    sessionId: session.body[:login_response][:login_return], 
    filters: {filter: 
                {
                    item: 
                        {key: 'created_at', value: 
                            {key: 'from', value: '2016-12-27 00:00:00'}
                    }, 
                    item: {key: 'created_at', value: 
                        {key: 'to', value: '2016-12-27 23:59:59'}
                    } 
                }
            }
        })

我尝试了数组中的项目仍然被覆盖,我该如何解决这个问题?

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

ajrkerr picture ajrkerr  ·  6评论

kjg picture kjg  ·  15评论

stensonb picture stensonb  ·  13评论

aleksandrs-ledovskis picture aleksandrs-ledovskis  ·  7评论

joney000 picture joney000  ·  3评论