我正在使用用于交换 XML 消息的外部 API。所以我用了很多Hash#from_xml
。
但是,#from_xml
如果它们是重复元素,则仅对 Array 中的元素进行编码。这是有道理的,但是当我试图遍历一个只出现一次的可重复元素时它会中断。例如:
<Stuff>
<SKU>ABC-123</SKU>
<SKU>DEF-456</SKU>
<SKU>XYZ-789</SKU>
</Stuff>
效果很好,因为:
my_hash = Hash.from_xml(xmlstring)["Stuff"]
将包含 3 个 SKU,所以我可以这样做:
my_hash["Stuff"].each do |sku|
# process the sku
end
但是这个 XML 失败了:
<Stuff>
<SKU>XYZ-789</SKU>
</Stuff>
因为myhash['SKU']
是哈希,而不是数组。我现在必须这样做:
my_hash['SKU'] = [my_hash['SKU']] if my_hash['SKU'].kind_of?(Hash)
有没有更清洁的方法?