Ruby on rails Nokogiri::XML和Nokogiri.parse之间的区别?

Ruby on rails Nokogiri::XML和Nokogiri.parse之间的区别?,ruby-on-rails,ruby,nokogiri,Ruby On Rails,Ruby,Nokogiri,put Nokogiri::XML(XML)和put Nokogiri.parse(XML)都返回相同的XML。 是的,它们都返回XML: > Nokogiri::XML(xml).class => Nokogiri::XML::Document > Nokogiri.parse(xml).class => Nokogiri::XML::Document 但是,在比较返回值时,我得到: > Nokogiri.parse(xml) === Nokog

put Nokogiri::XML(XML)
put Nokogiri.parse(XML)
都返回相同的XML。
是的,它们都返回XML:

 > Nokogiri::XML(xml).class
 => Nokogiri::XML::Document  
 > Nokogiri.parse(xml).class
 => Nokogiri::XML::Document 
但是,在比较返回值时,我得到:

 > Nokogiri.parse(xml) === Nokogiri::XML(xml)
 => false 
 > Nokogiri.parse(xml) == Nokogiri::XML(xml)
 => false 

Nokogiri::XML
Nokogiri.parse
之间有什么区别?

Nokogiri.parse
只是尝试检测传递给它的字符串是否是HTML,然后创建/返回一个带有预设parse选项的
Nokogiri::XML
Nokogiri::HTML
实例:

def parse string, url = nil, encoding = nil, options = nil
  doc =
    if string.respond_to?(:read) ||
      string =~ /^\s*<[^Hh>]*html/i # Probably html
      Nokogiri.HTML(
        string,
        url,
        encoding, options || XML::ParseOptions::DEFAULT_HTML
      )
    else
      Nokogiri.XML(string, url, encoding,
                    options || XML::ParseOptions::DEFAULT_XML)
    end
  yield doc if block_given?
  doc
end

这也会使
Nokogiri.parse(xml)
Nokogiri::xml(xml)
慢吗?
Nokogiri.parse
会稍微慢一点,但差别可以忽略。显式地告诉Nokogiri文档的类型,而不是让它来确定。我曾经经历过这样的情况:使用的启发式方法被愚弄了,返回了错误的文档类型。
>> Nokogiri.parse(xml) == Nokogiri.parse(xml)
=> false