如何使用Nokogiri获取没有嵌套元素的内容

时间:2011-01-13 10:45:28

标签: ruby nested nokogiri

src = '<paragraph>And bla foo <note>not important</note> bar baz</paragraph>'
doc = Nokogiri::XML(src)
puts doc.xpath('paragraph').first.content

上面的代码返回:

"And bla foo not important bar baz"

我正在寻找一种获取没有嵌套元素的内容的方法。 上面的例子只是一个示例XML,但在这个例子中我希望这样做:

"And bla foo bar baz"

2 个答案:

答案 0 :(得分:7)

puts doc.xpath('paragraph/child::text()')

我多年没有愤怒地使用XPath,但这似乎有效。

或者更好:

puts doc.xpath('paragraph/child::text()').to_s.squeeze(' ')

答案 1 :(得分:2)

您可以执行类似

的操作
doc.xpath('paragraph').children.map { |e| e.text if e.text? }.join

这将从你的例子中返回'和bla foo bar baz'