2013-04-04 76 views
1

一個哈希我已閱讀,建議您可以創建使用Rails的XML哈希內置的方法的幾個帖子創建從中檢索XML

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創建哈希?

我期待更好地理解這一點,我已閱讀的文件似乎是非常高的水平,如果任何可以提供一個基本的解釋或指向一個資源,我可以閱讀它,並期待獲得一個更好的理解

回答

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 
+0

對不起,問我可能是一個愚蠢的問題,但我如何確保返回的XML是一個字符串? – Richlewis 2013-04-04 09:18:08

+0

和是從現在閱讀文檔我可以看到在該示例中的XML是一個字符串,謝謝 – Richlewis 2013-04-04 09:26:08

+0

@Richlewis - 編輯答案英寸雖然,鑑於文檔頁面上顯示的限制,你可能會更好地使用別的東西?快速谷歌建議[Nori](https://github.com/savonrb/nori) – Chowlett 2013-04-04 09:44:58