Rails Nokogiri xpath()。每个只存储第一个节点

时间:2013-02-09 06:38:07

标签: ruby-on-rails ruby xml xml-parsing nokogiri

我正在尝试通过数据库种子将~10K的XML节点作为记录导入到我的Rails DB中。这是我导入XML代码的代码:

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菜鸟。关于为什么会发生这种情况的任何想法?

1 个答案:

答案 0 :(得分: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>