2013-02-09 51 views
1

我試圖通過數據庫種子將約10K個XML節點導入到我的Rails DB中作爲記錄。這裏是我的代碼導入XML代碼:Rails Nokogiri xpath()。每個只存儲第一個節點

doc = Nokogiri::XML(File.read("./db/seed/recipes.xml")) 

doc.xpath('//Item').each do |i| 
    Recipe.find_or_create_by_title(title: i.xpath('title').inner_text) 
end 

和樣本XML數據:

<Item> 
    <title>Fried Eggs and Collard Greens Over Polenta</title> 
</Item> 

然而,當我嘗試它的種子種子僅在第一個節點(即使有15K)。我是一個總的XML noob。任何想法爲什麼這可能會發生?

+0

請注意,您可以通過:doc.xpath('// Item/title')來簡化上述操作。each {| t | create_by_title title:t.text}' – Phrogz 2013-02-09 19:42:26

回答

2

XML文檔必須包含一個元素,它是所有其他元素的父元素。例如,

<Items> 
    <Item> 
    <title>Fried Eggs and Collard Greens Over Polenta</title> 
    </Item> 
    <Item> 
    <title>Fried Eggs and Collard Greens Over Polenta</title> 
    </Item> 
</Items>