gpt4 book ai didi

ruby - Savon 数组/哈希混淆

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:47 25 4
gpt4 key购买 nike

当 Savon 解析 XML 时:

<MessageList>
<TradeMessage ID="4850644"/>
<TradeMessage ID="4850666"/>
<TradeMessage ID="4850667"/>
<TradeMessage ID="4850712"/>
</MessageList>

它返回一个散列

{MessageList: TradeMessage: [{@id: '123'},...,{@id: '456'}]}

但是如果 XML 是这样的

<MessageList>
<TradeMessage ID="4850644"/>
</MessageList>

它会回来

{MessageList: TradeMessage: {@id: '123'}}

所以我无法循环遍历消息列表,因为它可以是散列或数组。

我循环遍历数组的代码是:

t[:message_list][:trade_message].each do |m|
TradeMessage.create(id: m[:@id])
end

遇到这种情况怎么办?我应该将 XML 解析器从默认的 Nokogiri 更改为其他解析器吗?

我注意到 Hash.from_xml(string) 返回类似于 Savon 的散列,如果有多个标签则为数组,如果有一个标签则为散列。


我决定使用 Nokogiri 文档来解析 Savon 的响应 response.doc

最佳答案

您可以使用 Ruby 的 splat 运算符。它总是会返回一个数组。请看下面的一个非常简单的例子:

require 'awesome_print'

def return_array(elements)
return *elements
end

ap return_array([:a, :b, :c])
ap return_array(:d)

关于ruby - Savon 数组/哈希混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52859170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com