Nokogiri从节点(每个父节点)向相反方向移动

时间:2014-02-13 22:44:02

标签: ruby nokogiri

我想从一个nokogiri节点遍历树。我怎么能这样做?

它想做类似的事情:

node.parents do |parent|
 break if parent.attributes['id'].present?
end 

2 个答案:

答案 0 :(得分:4)

ancestors method

node.ancestors.each do |a|
  break if a.attributes['id'].present?
end

目前尚不清楚你要做什么,但你可以将选择器作为参数传递,所以要找到所有具有id属性的祖先,你可以这样做:

node.ancestors("[@id]")

答案 1 :(得分:1)

一种递归方法,用于获取包含直到根的所有节点的数组:

get = proc { |n| [n] + (n.respond_to?(:parent) ? get.(n.parent): []) }
get.(node)