读取并保存标签内的自定义属性
Read and save custom attributes within tags
我想用 Ruby 和为产品分配类别的 Nokogiri 解析 XML 文件。 XML 文件如下所示:
<cat-assignment cat-id="123" prod-id="456" />
<cat-assignment cat-id="123" prod-id="789" />
<cat-assignment cat-id="123" prod-id="234" />
<cat-assignment cat-id="456" prod-id="123" />
等等。
我想为每个 cat-id 创建一个数组,并将相应的 prod-id 存储在该数组中。有什么办法吗?
像这样:
parsedXML.each do ...
...
cat_arr = p.xpath("catalog/cat-assignment[@cat-id]")
cat_arr.each do
*read all category assignments and create an array for each different cat-id and store the corresponding products within these arrays*
end
end
创建一个数据结构,将 "cat-ids" 与 "prod-ids" 的数组相关联,然后找到所有具有 "cat-id" 的元素并将 "prod-id" 附加到关联的数组。
例如:
require 'nokogiri'
xml =<<-__HERE__
<catalog>
<cat-assignment cat-id="123" prod-id="456" />
<cat-assignment cat-id="123" prod-id="789" />
<cat-assignment cat-id="123" prod-id="234" />
<cat-assignment cat-id="456" prod-id="123" />
</catalog>
__HERE__
cat_prods = Hash.new { |h,k| h[k] = Array.new }
doc = Nokogiri::XML(xml)
doc.xpath('//*[@cat-id][@prod-id]').each do |el|
cat_prods[el['cat-id']] << el['prod-id']
end
cat_prods # => {"123"=>["456", "789", "234"], "456"=>["123"]}
我想用 Ruby 和为产品分配类别的 Nokogiri 解析 XML 文件。 XML 文件如下所示:
<cat-assignment cat-id="123" prod-id="456" />
<cat-assignment cat-id="123" prod-id="789" />
<cat-assignment cat-id="123" prod-id="234" />
<cat-assignment cat-id="456" prod-id="123" />
等等。
我想为每个 cat-id 创建一个数组,并将相应的 prod-id 存储在该数组中。有什么办法吗?
像这样:
parsedXML.each do ...
...
cat_arr = p.xpath("catalog/cat-assignment[@cat-id]")
cat_arr.each do
*read all category assignments and create an array for each different cat-id and store the corresponding products within these arrays*
end
end
创建一个数据结构,将 "cat-ids" 与 "prod-ids" 的数组相关联,然后找到所有具有 "cat-id" 的元素并将 "prod-id" 附加到关联的数组。
例如:
require 'nokogiri'
xml =<<-__HERE__
<catalog>
<cat-assignment cat-id="123" prod-id="456" />
<cat-assignment cat-id="123" prod-id="789" />
<cat-assignment cat-id="123" prod-id="234" />
<cat-assignment cat-id="456" prod-id="123" />
</catalog>
__HERE__
cat_prods = Hash.new { |h,k| h[k] = Array.new }
doc = Nokogiri::XML(xml)
doc.xpath('//*[@cat-id][@prod-id]').each do |el|
cat_prods[el['cat-id']] << el['prod-id']
end
cat_prods # => {"123"=>["456", "789", "234"], "456"=>["123"]}