2011-01-13 64 views
3
src = '<paragraph>And bla foo <note>not important</note> bar baz</paragraph>' 
doc = Nokogiri::XML(src) 
puts doc.xpath('paragraph').first.content 

以上的回報代碼:如何獲得內容,而無需嵌套元素與引入nokogiri

"And bla foo not important bar baz" 

我正在尋找一種方式來獲得內容,而無需嵌套元素。 上面的例子只是一個示例XML,但在這個例子中,我想這是一個結果:

"And bla foo bar baz" 

回答

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

我沒有用的XPath憤怒多年,但似乎工作。

或者更好的是:

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

擠壓降低了字符串「和bla fo bar baz' - 它減少了o的:-)你應該添加擠壓(''),而不是 – HakonB 2011-01-13 11:17:07

+0

固定,謝謝@HakonB :-) – noodl 2011-01-13 11:47:13

2

你可以做類似

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

將從你的榜樣回報「和喇嘛富酒吧巴茲」