Вот как Nokogiri ведет себя при разборе (искаженном) XML :
require 'nokogiri'
doc = Nokogiri::XML("<div>Hello<br>World</div>")
puts doc.root
#=> <div>Hello<br>World</br></div>
Вот как Nokogiri ведет себя при разборе HTML :
require 'nokogiri'
doc = Nokogiri::HTML("<div>Hello<br>World</div>")
puts doc.root
#=> <html><body><div>Hello<br>World</div></body></html>
p doc.at('div').text
#=> "HelloWorld"
Я предполагаю, что под «чем-то особенным» вы подразумеваете, что хотите, чтобы Нокогири воспринимал это как новую строку в исходном тексте. <br>
является не чем-то особенным, и поэтому, соответственно, Нокогири не трактует это иначе, чем любой другой элемент.
Если вы хотите, чтобы это воспринималось как перевод строки, вы можете сделать это:
doc.css('br').each{ |br| br.replace("\n") }
p doc.at('div').text
#=> "Hello\nWorld"
Аналогично, если вы хотите вместо этого пробел:
doc.css('br').each{ |br| br.replace(" ") }
p doc.at('div').text
#=> "Hello World"