Rails 3+将XML转换为Hash并删除“root”元素

时间:2012-07-31 18:08:58

标签: ruby-on-rails-3 hash xml-parsing

我有一些(不是“格式正确”)XML存储为字符串:

xml_data_as_string = "<first_name>John</first_name><last_name>Smith</last_name>"

我正在尝试将其转换为哈希值,因此可以像这样引用它:

@hash[:first_name] # => John

我可以通过以下方式实现这一目标:

Hash.from_xml("<root>#{xml_data_as_string}</root>")

from_xml方法似乎要求XML有一个根元素。所以我目前必须将哈希引用为:

@hash[:root][:first_name] # => John

这有点不方便,我想知道是否有一种简单的方法来实现这一目标。我查看了from_xml的API,它非常稀疏......显示了一个例子,没有进一步的解释。

这不是世界末日这样做的,但我想要一个更清洁的解决方案。

1 个答案:

答案 0 :(得分:2)

@hash = Hash.from_xml("<root>#{xml_data_as_string}</root>")[:root]

需要正确格式化XML数据以进行解析,但这样您只需调用[:root]一次。确保数据良好或者您会收到错误,要求[:root]