【发布时间】:2012-07-15 04:57:43
【问题描述】:
感觉我在这里遗漏了一些很明显的东西,但看不到。
我有一个 XML 文件并且正在使用 Nokogiri gem。
XML 看起来像这样(想象一下,如果您将拥有无限数量的“变体”):
<?xml version="1.0" encoding="UTF-8"?>
<products>
<variant>
<sku type="string">123abc</sku>
<inventory-quantity type="integer">68</inventory-quantity>
</variant>
<variant>
<sku type="string">321cba</sku>
<inventory-quantity type="integer">22</inventory-quantity>
</variant>
</products>
我想遍历变体并为每个包含“sku”和“inventory-quantity”属性的记录创建一个相应的记录。
这是我到目前为止所得到的,但不是创建单独的记录,而是在上述情况下创建两条记录并将 Nokogiri 返回的完整数组或 NodeSet 插入到每个记录属性中。所以这个:
doc = Nokogiri::XML(File.open("#{Rails.root}/public/new.xml"))
variant = doc.xpath("//variant")
variant.each do |product|
sku = product.xpath("//sku").text
quan = product.xpath("//inventory-quantity").text
Productmapping.create(:sku => sku, :product_quantity => quan)
end
创建这个...
sku inventory-quantity
123abc321cba 6822
123abc321cba 6822
我真正想要的地方:
sku inventory-quantity
123ab 68
321cba 22
看起来这是因为 xpath 定位器将所有匹配项返回到一个数组中,我正在调用该数组并将其插入到每条记录中。
谢谢!
【问题讨论】:
标签: ruby-on-rails ruby xml activerecord nokogiri