Nokogiri使用DOT'。 XPATH的符号

时间:2018-12-21 04:10:47

标签: ruby xpath nokogiri

我所有的搜索都表明在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 

0 个答案:

没有答案