我所有的搜索都表明在xpath中使用'.//'应该在当前节点上开始下一个搜索。在下面的代码中,我认为我应该只返回第一个h3元素“顶级”,并且搜索应该终止,相反,我还返回第二个h3标记,该标记完全位于另一个节点中。我想念什么。
=begin Sample HTML contains
<DIV><DIV><DIV id ='1'><h3> Top Level </h3></DIV></DIV></DIV>
<DIV><DIV><DIV id ='2'><h3> Bottom Level </h3></DIV></DIV></DIV>
=end
require 'rubygems'
require 'nokogiri'
page = Nokogiri::HTML(open("Sample.html"))
el = page.xpath("html/body/div/div/div[@id='1']") # set postion in tree
puts el.inspect
=begin
[#<Nokogiri::XML::Element:0x1990410 name="div" attributes= [#<Nokogiri::XML::Attr:0x1990200 name="id" value="1">]`
children=[#<Nokogiri::XML::Text:0x197dda4 " \r\n\t\t\t">, #<Nokogiri::XML::Element:0x197dcc0 name="h3"
children=[#<Nokogiri::XML::Text:0x197da74 " Top Level ">]>, #<Nokogiri::XML::Text:0x197d768 "\r\n
=end
el = page.xpath(".//h3")
puts el.inspect
=begin
[ #<Nokogiri::XML::Element:0x197dcc0 name="h3" children=[#<Nokogiri::XML::Text:0x197da74 " Top Level ">]>,
#<Nokogiri::XML::Element:0x197c37c name="h3" children=[#<Nokogiri::XML::Text:0x197c190 " Bottom Level ">]>]
=end