嘗試循環部分XML文件時出現問題。我正在使用Nokogiri和Rails3。在Rails 3中使用Nokogiri讀取XML文件
我讀這個XML飼料 - http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml
這裏是我的代碼:
def save_rates
# get the XML data form ECB URL
file_handle = open('http://www.ecb.europa.eu/stats/eurofxref/eurofxref-hist-90d.xml')
# get document xml string and create Nokogiri object
doc = Nokogiri::XML(file_handle)
# foreach date...
doc.xpath("//Cube/Cube").each do |cube|
raise cube.inspect # isn't being executed
# foreach currency...
cube.xpath("./Cube").each do |curr|
# create DB entry
Exchange.create(:currency=>curr.currency, :rate=>curr.rate, :record_date => cube.time)
end
end
end
當我檢查doc
我可以看到引入nokogiri對象。但是,當我嘗試在第一個.each循環內部提升cube.inspect
時,它只是沒有開火。所以這讓我相信我的路線是錯誤的://Cube/Cube
。
從我在Nokogiri教程中看到的其他例子,路徑與此類似。我的路徑錯了還是有其他事情我在這裏做錯了?
我是紅寶石n00b所以請容易!
UPDATE
這裏是XML
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time="2013-02-25">
<Cube currency="USD" rate="1.3304"/>
<Cube currency="JPY" rate="125"/>
<Cube currency="BGN" rate="1.9558"/>
<Cube currency="CZK" rate="25.52"/>
<Cube currency="DKK" rate="7.4614"/>
<Cube currency="GBP" rate="0.8789"/>
...
</Cube>
<Cube>
<Cube time="2013-02-24">
<Cube currency="USD" rate="1.3304"/>
<Cube currency="JPY" rate="125"/>
<Cube currency="BGN" rate="1.9558"/>
<Cube currency="CZK" rate="25.52"/>
<Cube currency="DKK" rate="7.4614"/>
<Cube currency="GBP" rate="0.8789"/>
...
</Cube>
</Cube>
</gesmes:Envelope>
請包含您正在嘗試閱讀的XML片段。把URL放在你的代碼中是可以的,但是如果/當這個鏈接打破你的問題時,對於尋找同樣問題的其他人來說,沒有什麼意義,或者是有價值的。 – 2013-02-25 14:14:23
我已經包含xml結構 – iamjonesy 2013-02-25 14:19:07