2011-11-17 202 views
4

我是Ruby的新手,我遇到了一些哈希問題。紅寶石哈希:不能將字符串轉換爲整數

我從YouTube API返回的XML已轉換爲哈希值。這裏是由Hash.from_xml()返回的散列:http://pastebin.com/9xxE6iXU

我想從每個結果,如標題,鏈接,作者等哈希特定元素。每當我嘗試通過哈希循環或者抓住一個特定的元素,我收到一個「無法將字符串轉換爲整數」的錯誤。

這裏是我使用用於循環的代碼:

@data["feed"]["entry"]["title"].each do |key, value| 
    "<p>"+key+" "+value+"</p>" 
end 

我還試圖抓取特定元素,如@data [「進料」] [「條目」] [「標題」] [ 0]。

如何循環訪問哈希並獲取特定元素?

+2

一個問題,你真的想在這裏哈希工作?或者你只是嘗試這個作爲第一個選擇;因爲通常你會使用像nokogiri這樣的xml解析器。 – robustus

+0

是的,你是對的。處理完這個之後,我決定首先解析xml。 – Jarred

回答

5

這是怎麼回事,因爲@data["feed"]["entry"]是散列的數組:

puts @data["feed"]["entry"].class # => Array 

這個數組中的每個元素散列具有「ID」,「類別」,「冠軍」等價值觀。

對於抓住每一個標題嘗試使用下面的代碼片段:

@data["feed"]["entry"].each do |entry| 
    puts entry["title"] 
end 
# => "TABE test adult basic education" 
    "WhatCollegesHopeYouWon'tFindOutAboutACTSATTestPrep..." 
    .... 
+0

感謝您的解釋。你給我的代碼只是在「entry」=> 之後輸出整個散列值我仍然對如何從這裏獲取特定元素感到困惑。 – Jarred

+0

如果你想採取特定的元素,你可以使用[],因爲我用'title'顯示,不是嗎? – WarHog

+0

這就是我使用上述循環時所得到的結果:http://pastebin.com/z9WkscFm – Jarred