Обработка только фрагмента HTML и его возврат

Когда я делаю следующее с Нокогири:

some_html = '<img src="bleh.jpg"/>test<br/>'
f = Nokogiri::HTML(some_html)
#do some processing
puts f

Он напечатает всю структуру документа XHTML с кодом верхнего уровня.

Как я могу просто распечатать/вернуть/получить часть html, которая находится в переменной some_html?


No.

f вернет:

"<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"http://www
.w3.org/TR/REC-html40/loose.dtd\">\n<html><body>\n<img src=\"bleh.jpg\">test<br>\n
</body></html>\n"

Мне нужна только внутренняя/фрагментная часть:

<img src=\"bleh.jpg\">test<br>

person all jazz    schedule 04.11.2009    source источник


Ответы (2)


Вместо разбора с использованием Nokogiri::HTML(...) используйте Nokogiri::HTML::fragment(...):

asdf = Nokogiri::HTML::fragment('<img src="bleh.jpg">test<br>')
print asdf.to_html
# >> <img src="bleh.jpg">test<br>
person the Tin Man    schedule 27.11.2009
comment
это вопрос стиля, но лично я нахожу Nokogiri::HTML.fragment менее запутанным, чем Nokogiri::HTML::fragment - это не похоже на опечатку ;) - person mkk; 08.01.2014
comment
Руководство по стилю Ruby рекомендует использовать . вместо :: для вызова методов класса, поэтому Nokogiri::HTML.fragment явно предпочтительнее. - person Lev Lukomsky; 07.12.2018

Что вы подразумеваете под частью «html»?

Просто выполните f.text(), чтобы получить внутренний текст.

person CodeJoust    schedule 04.11.2009