如何使用Nokogiri获取父母的文本

时间:2014-12-15 11:23:07

标签: ruby ruby-on-rails-4 nokogiri

我想要获得父<p>标签的文字。例如:

<p>
  <a name="TOPIC"></a>
  <b><font color="#800000" size="4" face="Arial">Exapmles</font></b>
</p>

这适用于此示例:

test = Nokogiri::HTML("row['test']"])
raw_attributes = test.root.css("p a").inject({}) do |accumulator, element| 
  accumulator[element.attr("name")] = (element.parent.text).strip
  accumulator
end

但它不适用于以下示例:

<p>
  <font>
    <a name="TOPIC"></a>
    <b><font color="#800000" size="4" face="Arial">Exapmles</font></b>
  </font>
</p>

我怎么能用Nokogiri做到这一点?我想要解决方案适用于上述两个条件。

1 个答案:

答案 0 :(得分:2)

puts doc.at_xpath("//p[//a[@name='TOPIC']]").inner_text.strip
#=> "Exapmles"

解码,这说:

  • //p - 在文档中的任意位置找到p元素
    • […] - 符合此条件
    • //a - 它有一个a元素作为后代
      • [@name='TOPIC'] - name属性,其值为TOPIC