Nokogiri эквивалент hpml-метода Hpricot - PullRequest
1 голос
/ 30 января 2011

Метод Hpricot html выдает только HTML-код в документе:

> Hpricot('<p>a</p>').html
=> "<p>a</p>"

В отличие от этого, наиболее близким к Nokogiri является метод inner_html, который оборачивает вывод в теги <html> и <body>:

> Nokogiri.HTML('<p>a</p>').inner_html
=> "<html><body><p>a</p></body></html>"

Как я могу получить поведение метода html Hpricot с Nokogiri? Т.е. я хочу это:

> Nokogiri.HTML('<p>a</p>').some_method_i_dont_know_about
=> "<p>a</p>"

Ответы [ 2 ]

3 голосов
/ 30 января 2011

Как насчет:

require 'nokogiri'

puts Nokogiri.HTML('<p>a</p>').to_html #
# >> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
# >> <html><body><p>a</p></body></html>

Если вы не хотите, чтобы Nokogiri создавал HTML-документ, вы можете указать ему проанализировать его как фрагмент документа:

puts Nokogiri::HTML::DocumentFragment.parse('<p>a</p>').to_html
# >> <p>a</p>

В любом случае метод to_html возвращает HTML-версию документа.

2 голосов
/ 30 января 2011
> Nokogiri.HTML('<p>a</p>').xpath('/html/body').inner_html
=> "<p>a</p>"
...