【发布时间】:2015-01-11 01:19:25
【问题描述】:
很多人通常想做相反的转换,但我想从 Ruby 哈希(包含许多嵌套哈希甚至数组)构建一个节点:
my_hash = {
"name" => "Something",
"property_1" => "Something"
"nested_array_items" => [{ "name" => "Nasty nested array item",
"advice" => "Use recursive function" },
{ "name" => "yes this is an array",
"notice" => "not necessarily the same keys"}],
"nested_many_levels" => { "additional_items" => { "ok_stop_here" => true } },
}
我有一个 Nokogiri 节点,它应该包含所有这些。我如何定义函数来做到这一点?
每个子节点都应该以密钥的名称命名,最终将“_”替换为“-”。对于数组,使用每个项目的键名称的单数,假设它是常规复数(以“s”结尾,否则会引发错误)。
例如上面给出的哈希应该变成:
...
<name>something></name>
<property_1>Something</property_1>
<nested_array_items>
<nested_array_item>
<name>Nasty nested array item</name>
<advice>Use recursive function</advice>
</nested_array_item>
<nested_array_item>
<name>yes this is an array</name>
<notice>not necessarily the same keys</notice>
</nested_array_item>
</nested_array_items>
<nested_many_levels>
<additional_items>
<ok_stop_here>true</ok_stop_here>
</additional_items>
</nested_many_levels>
...
【问题讨论】:
-
或者 Nokogiri 已经提供了一个帮手来做这件事?
-
我试图回答这个问题,但我投了反对票,因为您的要求不明确。您提供了一些示例输入,但没有与之配套的示例输出。然后,您根据不完整的输入提供示例输出。
nested_many_levels会发生什么?如果您编辑问题以解决这些问题,我将很乐意改变我的投票。 -
你说得对,这不是很清楚。我已经重写了输出样本,使其与输入哈希样本匹配。希望现在好多了
标签: ruby xml recursion hash nokogiri