Possible Duplicate:
finding common ancestor from a group of xpath?
采用Nokogiri。
i 需要获得一组元素的共体积。
我们来了
require rubygems
require nokogiri
class Nokogiri::XML::NodeSet
def common_ancestor
return nil if empty?
ancestors = self.collect{ |e| e.ancestors.to_a.reverse }
common = nil
ancestors.shift.zip(*ancestors) do |nodes|
break if nodes.uniq.size > 1
common = nodes.first
end
return common
end
end
doc = Nokogiri::XML(DATA.read)
p doc.css( .leaf ).common_ancestor.path
__END__
<html><body><span>
<div><p><h1><i><font class="leaf"/></i></h1></p></div>
<div><div><div><div><table><tr><p><h1 class="leaf"/></p></tr></table></div></div></div></div>
<p><h1><b class="leaf"/></h1></p>
</span></body></html>
在<代码>NodeSet类别中添加这一条,这样我们就可以把它称作一种方法。