Ruby 如何使用后代

Ruby 如何使用后代,ruby,nokogiri,Ruby,Nokogiri,我有点像: doc.css('results[name="test"]').map { |node| file.write node.ancestors("tests").first['name']; file.write "\n" } 但我想写的是: doc.css('tests').map{ |node| file.write node.first['name'] if node.descendants('results').first['name'] == "test" } 但是没有方

我有点像:

doc.css('results[name="test"]').map { |node| file.write node.ancestors("tests").first['name']; file.write "\n" }
但我想写的是:

doc.css('tests').map{ |node| file.write node.first['name'] if node.descendants('results').first['name'] == "test" }
但是没有方法
后代
。 如果我想使用第二种方法,我应该在代码段中修改什么?

试试看

doc.css('tests').each { |node| file.write node['name'] if node.css('results[name="test"]').any? }


是否可以添加一个示例测试文件,其中需要在此脚本上运行?真实文件包含机密数据,我已更改了上面的内容,然后将其发布到此处。请阅读“”。当询问您的代码有问题时,请包括证明您遇到问题的最小输入数据。否则,我们必须尝试创建与代码匹配的内容,这会浪费时间。您又回来了:)。不知何故,第二个代码比第一个快。我不明白为什么。无论如何,这就是我想检查它的原因。至少快10倍。
doc.css('tests').select { |node| node.css('results[name="test"]').any? }.each { |node| file.write node['name'] }