Как получить контент без вложенных элементов с помощью Nokogiri - PullRequest
3 голосов
/ 13 января 2011
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 ]

7 голосов
/ 13 января 2011
puts doc.xpath('paragraph/child::text()')

Я много лет не использовал XPath в гневе, но, похоже, это работает.

Или еще лучше:

puts doc.xpath('paragraph/child::text()').to_s.squeeze(' ')
2 голосов
/ 13 января 2011

Вы могли бы сделать что-то вроде

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

Это вернет 'And Bla Foo Bar Baz' из вашего примера

...