我想創建一個更快的解析器的SOAP API,將xml變成一個散列,並匹配的內存加載架構的密鑰基於YML結構。我用紫菜將XML解析成一個哈希:更好的方法來檢索紅寶石哈希中的匹配鍵的值
hash1 = { :key1 => { :@attr1=> "value1", :key2 => { :@attribute2 => "value2" }}}
(舊的Ruby語法,以保持屬性從按鍵清晰)
同時我有一個加載到內存中一個常數並存儲相關按鍵需要爲我的行爲:
hash2 = {:key1 => { :key2 => { :@attribute2 => nil }}}
(舊的Ruby語法,以保持屬性從按鍵清晰)
我需要以最有效的方式將第一個散列與第二個散列匹配。按我的理解,有很多方法可以做到這一點:
遍歷同時兩個散列密鑰,但使用第二個爲原點:(?多語法,¿清晰)
def iterate(hash2, hash1)
hash2.each do |k, v|
if v.is_a? Hash
iterate(hash2[k], hash1[k])
else
hash2[k] = hash1[k]
end
end
end
一些問題,我想起:
- 有沒有更有效的方法來做到這一點,而不必遍歷 我所有的鑰匙?
- 這比直接訪問密鑰效率更高嗎?
- 有沒有更好的方法來解析XML到一個哈希使用哈希2 內訪客模式?
我不認爲你能避免重複,當你嵌套需要遞歸哈希...我看來,像只有第三個問題(重新設計)可以探索更有效的路徑...也許是有避免需要匹配哈希的方法...?或者,您可以使用StringScanner並編寫您自己的解析器... – Myst