对于一个简单的兄弟姐妹来说,XPATH是什么



样本:

<p>
 <span class="label">Name:</span>  PeterPan<br>
 <span class="label">Tag:</span>   Critical<br>
 <span class="label">Priority:</span>  223<br>
</p>

我正在使用下面的代码,我得到:

Name:|
Tag:| 
Priority: 
doc.xpath("//p/span").each do |para_tag|
   puts para_tag.text
end

但我需要以下详细信息:

Name: PeterPan | Tag: Critical | Priority: 223

使用函数式编程创建从标签到值的映射:

labels = Hash[
  doc.css('span.label').map do |s|
    [
      s.text[0..-2],   # get rid of the trailing colon
      s.at_xpath('following-sibling::text()').content.strip
    ]
  end
]
p labels
#=> {"Name"=>"PeterPan", "Tag"=>"Critical", "Priority"=>"223"}

或者更简单地说,我们可以向他们展示:

doc.css('span.label').each{ |s| puts "#{s.text} -- #{s.next_sibling}" }
#=> Name: --   PeterPan
#=> Tag: --    Critical
#=> Priority: --   223

使用next_sibling查找以下文本,并利用Nokogiri::XML::Text#to_s提供文本内容的事实

如果当前节点是:

<span class="label">Name:</span>

那么这个XPath表达式:

following-sibling::node()[1]

选择所需的文本节点:

"  PeterPan"

相关内容

  • 没有找到相关文章

最新更新