Select 名称以特定字符串开头的所有 XML 个元素?

Select all XML elements whose name starts with a certain string?

我有两个元素,itemdate:

我有一个包含 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 来解析来自 itemdate 的数据。 我写了一半的脚本,它创建了元素:

doc.xpath("//content/*").each do |item|
  Item.create!(
              title: item.xpath("title").text,
              description: item.xpath("description").text)
end

现在我需要查找并构建项目的所有日期(元素 date),但无法理解如何解析 <data_1><data_2>、[=25 等标签=]等 我在尝试什么

  tour.xpath("//*/data_*").each do |date|
    puts date
  end

  tour.xpath{ |i| "//*/data_#{i}" }.each do |date|
    puts date
  end

但是它不起作用或者我得到一个错误。

试试这个:

doc.xpath("//content/*").each do |item|
  ...
  item.xpath("./*[starts-with(local-name(), 'date_')]").each do |d|
    ...
  end
end

(根据@kjhughes 的建议进行了剪辑)

用于选择文档中所有 date 元素的 XPath,无论它们的继承如何,都只是:

//date

选择名称以 "date_" 开头的所有元素的 XPath 是:

//*[starts-with(local-name(), 'date_')]

starts-with() and local-name()