gpt4 book ai didi

ruby-on-rails - 使用 nokogiri 解析 XML 并创建具有多个属性的记录

转载 作者:数据小太阳 更新时间:2023-10-29 02:15:12 25 4
gpt4 key购买 nike

感觉我在这里遗漏了一些非常明显但看不到的东西。

我有一个 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”和“库存数量”属性的记录创建相应的记录。

这是我到目前为止所得到的,但在上面的例子中,它没有创建单独的记录,而是创建了两个记录,并将 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 定位器将所有出现的事件返回到一个数组中,我正在调用该数组并为每条记录插入它。

谢谢!

最佳答案

答案很简单——而不是:

sku = product.xpath("//sku").text
quan = product.xpath("//inventory-quantity").text

只需使用:

sku = product.xpath("sku").text
quan = product.xpath("inventory-quantity").text

这是因为 //sku 选择了文档根目录的所有 sku 后代。

关于ruby-on-rails - 使用 nokogiri 解析 XML 并创建具有多个属性的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11391080/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com