English 中文(简体)
获得普通的xpath祖先的 no? [复制]
原标题:get common xpath ancestor node? [duplicate]
  • 时间:2009-09-28 20:42:08
  •  标签:
问题回答

我们来了

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类别中添加这一条,这样我们就可以把它称作一种方法。





相关问题
热门标签