从检索到的XML创建哈希

时间:2013-04-04 09:09:26

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

我已经阅读了一些帖子,建议您可以使用Rails内置方法

从XML创建Hash
from_xml

所以例如我可以做

Hash.from_xml(object)

就我而言,我正在从api中检索XML并使用Nokogiri来解析它,就像这样

url = "https://www.google.com/m8/feeds/contacts/default/full?client_id=#{client_id}&access_token=#{current_user.token}&max-results=#{max_results}";
doc = Nokogiri::XML(open(url))

现在,如果我尝试

Hash.from_xml(doc)

我收到REXML解析错误。这是因为我需要从未解析的XML创建Hash吗?

我希望能够更好地理解这一点,我读过的文件似乎是非常高级的,如果有任何可以只提供一个基本的解释或指向一个资源,我可以阅读它并期待获得一个更好的理解

1 个答案:

答案 0 :(得分:2)

期待一个字符串。

虽然this docs page在方法描述中没有这么说,但从注释中的例子中可以清楚地看出输入应该是XML字符串。

你应该可以这样做:

Hash.from_xml(open(url).read)

编辑:看来,在Rails下,Nokogiri有to_hash方法。所以你也可以这样做:

doc = Nokogiri::XML(open(url))
xml_hash = doc.to_hash