如何在ruby中创建循环(嵌套)哈希

时间:2019-05-07 01:51:04

标签: ruby xml hash

我是红宝石和哈希的新手。最近,我陷入了一个哈希问题。 创建哈希的目的是在以后格式化为xml。它正在与SOPA XML Call一起使用。我将粘贴以下功能。

一个功能是创建哈希,另一功能是将哈希转换为xml(这可能并不重要)。

Ruby:创建哈希值

def hotel_status_hash(houses)
   houses = houses.map do |h| {
        "Statistic": {
            "@HotelCode" => h
        }
    }
   end
   {
      "Statistics":houses
   }
end

此功能是将上述消息转换为xml

def request_xml(client, action, message = {})
  client.build_request(action, :attributes => root_attribute) do
    message(message)
  end.body
end

预期结果

<OTA_HotelStatsNotifRQ Target="Production" PrimaryLangID="zh-cn" Version="1.0"
TimeStamp="2016-02-13T09:30:47Z" xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<POS>
<Source>
<RequestorID ID="32" MessagePassword="P@ssw0rd" Type="1" />
<CompanyName Code="C" CodeContext="1" />
</Source>
</POS>
<Statistics>
  <Statistic HotelCode="1332484" />
  <Statistic HotelCode="1332483" />
</Statistics>
</OTA_HotelStatsNotifRQ>

实际结果

<OTA_HotelStatsNotifRQ Target="Production" PrimaryLangID="zh-cn" Version="1.0"
TimeStamp="2016-02-13T09:30:47Z" xmlns="http://www.opentravel.org/OTA/2003/05"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<POS>
<Source>
<RequestorID ID="32" MessagePassword="P@ssw0rd" Type="1" />
<CompanyName Code="C" CodeContext="1" />
</Source>
</POS>
<Statistics>
  <Statistic HotelCode="1332484" />
</Statistics>
<Statistics>
  <Statistic HotelCode="1332483" />
</Statistics>
</OTA_HotelStatsNotifRQ>

因此,基本上,我希望在边统计中循环统计,而不是循环统计。我真的很感谢任何帮助。

0 个答案:

没有答案