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"
答案 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'