Ruby on rails 选择名称以特定字符串开头的所有XML元素?
我有两个元素,Ruby on rails 选择名称以特定字符串开头的所有XML元素?,ruby-on-rails,ruby,xml,xpath,nokogiri,Ruby On Rails,Ruby,Xml,Xpath,Nokogiri,我有两个元素,项目和日期: 项目有很多日期 日期属于项目 我有一个XML树文件,如下所示: <content> <item_1> <title> <description> <date_1> <date></date> <count></count> </date_1> <date_2>
项目
和日期
:
有很多日期项目
属于项目日期
<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>
现在我需要找到并构建项目的所有日期(元素date
),但无法理解如何解析标签,如
,
,
等。
我在尝试什么
tour.xpath("//*/data_*").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是:
请参阅和。“我出错”的意思是什么?它什么也没告诉我们。也许指定您得到的确切异常会有所帮助。这意味着regexp在xpath()中不起作用,虽然它应该起作用,但速度会慢一些。您要求Nokogiri返回
content
节点中的所有节点,然后让Ruby过滤掉它们。最好让“引擎”来完成这项工作,也就是说,让libXML或DBM尽可能地降低“命中率”以提高速度,然后使用减少的结果。同意。我将根据di@kjhughes的建议更新代码片段。
doc.xpath("//content/*").each do |item|
...
item.xpath("./*[starts-with(local-name(), 'date_')]").each do |d|
...
end
end
//date
//*[starts-with(local-name(), 'date_')]