混合模式内容 - 如何从h1中选择文本但不包含其子元素的文本?

时间:2012-09-14 00:09:27

标签: css ruby xpath css-selectors

我无法从<h1>元素打印简单文本:

require 'nokogiri'

doc = Nokogiri::HTML("<h1><em>Name</em>A Johnson </h1>")
puts doc.at_xpath("//h1").content

输出:

NameA Johnson

我想在输出中只有A Johnson。是否可以使用XPath或CSS选择器选择此文本?

2 个答案:

答案 0 :(得分:2)

如何使用text() XPath函数?像这样(虽然未经测试):

require 'nokogiri'

doc = Nokogiri::HTML("<h1><em>Name</em>A Johnson </h1>")
puts doc.at_xpath("//h1/text()").content

答案 1 :(得分:1)

这些解决方案可能只是故事的一部分。考虑:

doc = Nokogiri::HTML("<h1><em>Name</em>A <br>Johnson </h1>")
puts doc.at_xpath("//h1/text()").content

=> A

puts doc.at('h1').children.last.text

=> Johnson

或我的建议:

puts doc.search("h1/text()").text

=> A Johnson