시작하려면 Ruby on Rails를 처음 사용했습니다.XML을 레일에서 해시하는 더 좋은 방법은 무엇입니까?
그래서 각 큐브의 "currency"속성이 키이고 "rate"가 값이되도록 this XML file에서 해시로 데이터를 가져 오려고합니다. ,
이xml = open("http://www.ecb.int/stats/eurofxref/eurofxref-daily.xml")
doc = Document.new(xml)
a = []
b = []
doc.elements.each("//Cube") do |element|
a << element.attributes["currency"]
b << element.attributes["rate"]
end
currency_rates = {}
a.each_with_index {|k,i|currency_rates[k] = b[i]}
이 코드는 작동합니다
{"Envelope"=>{"Cube"=>{"Cube"=>{"Cube"=>[{"rate"=>"1.3627", "currency"=>"USD"}, {"rate"=>"106.58", "currency"=>"JPY"}, {"rate"=>"1.9558", "currency"=>"BGN"}, {"rate"=>"25.030", "currency"=>"CZK"}, {"rate"=>"7.4414", "currency"=>"DKK"}, {"rate"=>"0.85515", "currency"=>"GBP"}, {"rate"=>"309.48",
"currency"=>"HUF"}, {"rate"=>"3.4528", "currency"=>"LTL"}, {"rate"=>"0.7037", "currency"=>"LVL"}, {"rate"=>"4.4774", "currency"=>"PLN"}, {"rate"=>"4.3528", "currency"=>"RON"}, {"rate"=>"9.0625", "currency"=>"SEK"}, {"rate"=>"1.2174", "currency"=>"CHF"}, {"rate"=>"7.7580", "currency"=>"NOK"}, {"r
ate"=>"7.5010", "currency"=>"HRK"}, {"rate"=>"42.1400", "currency"=>"RUB"}, {"rate"=>"2.4508", "currency"=>"TRY"}, {"rate"=>"1.3237", "currency"=>"AUD"}, {"rate"=>"2.3945", "currency"=>"BRL"}, {"rate"=>"1.3855", "currency"=>"CAD"}, {"rate"=>"8.6613", "currency"=>"CNY"}, {"rate"=>"10.5920", "curre
ncy"=>"HKD"}, {"rate"=>"12121.45", "currency"=>"IDR"}, {"rate"=>"5.0177", "currency"=>"ILS"}, {"rate"=>"67.1540", "currency"=>"INR"}, {"rate"=>"1529.33", "currency"=>"KRW"}, {"rate"=>"18.6867", "currency"=>"MXN"}, {"rate"=>"4.2525", "currency"=>"MYR"}, {"rate"=>"1.7152", "currency"=>"NZD"}, {"rat
e"=>"58.289", "currency"=>"PHP"}, {"rate"=>"1.7402", "currency"=>"SGD"}, {"rate"=>"42.162", "currency"=>"THB"}, {"rate"=>"11.1484", "currency"=>"ZAR"}], "time"=>"2011-11-01"}}, "subject"=>"Reference rates", "xmlns:gesmes"=>"http://www.gesmes.org/xml/2002-08-01", "Sender"=>{"name"=>"European Centr
al Bank"}, "xmlns"=>"http://www.ecb.int/vocabulary/2002-08-01/eurofxref"}}
그래서 내가 REXML을 사용하여 종료 :
먼저 나는 나에게 열심히조차이 작업을보고 다음을 가지고있는 Hash.from_xml를 사용하여 시도 나는 내가 찾고있는 최종 결과를 얻는다. 하지만 나에게 이것이 두 개의 분리 된 배열을 생성하고 나서 함께 결합하는 것처럼 복잡한 것처럼 보입니다. 더 좋은 방법이 있나요? 배열이없는 블록에서 해시를 만드는 방법이 있습니까?
아니면 내 블록 전에 할 수있는 더 나은 XML 쿼리가 있습니까? XPath에 관해서는 거의 알지 못합니다.
체크 아웃 https://github.com/jnunemaker/crack을 당신은 알고 –