我有两个元素,item
和date
:
item
has_many dates date
belongs_to item 我有一个XML树的文件,如下所示:
<content>
<item_1>
<title>
<description>
<date_1>
<date></date>
<count></count>
</date_1>
<date_2>
<date></date>
<count></count>
</date_2>
</item_1>
<item_2>
<title>
<description>
<date_1>
<date></date>
<count></count>
</date_1>
<date_2>
<date></date>
<count></count>
</date_2>
</item_2>
</content>
我使用Nokogiri解析来自item
和date
的数据。
我写了一半脚本,它创建了元素:
doc.xpath("//content/*").each do |item|
Item.create!(
title: item.xpath("title").text,
description: item.xpath("description").text)
end
现在我需要找到并构建项目的所有日期(元素date
),但无法理解如何解析<data_1>
,<data_2>
,<data_3>
等标记等等
我在尝试什么
tour.xpath("//*/data_*").each do |date|
puts date
end
或
tour.xpath{ |i| "//*/data_#{i}" }.each do |date|
puts date
end
但它不起作用或我收到错误。
答案 0 :(得分:6)
用于选择文档中所有date
元素的XPath,无论其遗产如何,都只是:
//date
用于选择名称以&#34; date _&#34;开头的所有元素的XPath;是:
//*[starts-with(local-name(), 'date_')]
答案 1 :(得分:2)
试试这个:
doc.xpath("//content/*").each do |item|
...
item.xpath("./*[starts-with(local-name(), 'date_')]").each do |d|
...
end
end
(根据@kjhughes建议剪辑剪辑)