Nokogiri相当于Hpricot的html方法

时间:2011-01-30 04:00:44

标签: ruby nokogiri hpricot

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>"

如何使用Nokogiri获取Hpricot的html方法的行为?即,我想要这个:

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

2 个答案:

答案 0 :(得分:3)

怎么样:

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版本。

答案 1 :(得分:2)

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