我想从一个nokogiri节点遍历树。我怎么能这样做?
它想做类似的事情:
node.parents do |parent|
break if parent.attributes['id'].present?
end
答案 0 :(得分:4)
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)