ここでかなり明白な何かが欠けているように感じますが、それを見ることはできません。
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」属性を含むそれぞれに対応するレコードを作成したいと考えています。
これは私がこれまでに得たものですが、個々のレコードを作成する代わりに、上記のケースでは 2 つのレコードを作成し、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 ロケーターがすべての出現箇所を配列に返し、その配列を呼び出して各レコードに挿入しているためのようです。
ありがとう!