如何让Nokogiri报告或引发无效Html片段的错误?我

时间:2017-03-22 12:32:29

标签: ruby nokogiri

似乎Nokogiri并不尊重它的严格选择。

html = %Q{<ul id="Test"><li></ul></li>}
parsed = Nokogiri::HTML(html) do |config|
  config.strict
end

这应该根据文件引起错误:
http://www.nokogiri.org/tutorials/parsing_an_html_xml_document.html

STRICT - Strict parsing; raise an error when parsing malformed documents

他们用于打开选项的代码是:

doc = Nokogiri::XML(File.open("blossom.xml")) do |config|
  config.strict.noblanks
end

之前有类似的问题,但没有答案: How can I detect errors in an HTML document fragment with Ruby?

1 个答案:

答案 0 :(得分:0)

通常我使用errors来找出错误的内容:

require 'nokogiri'
doc = Nokogiri::HTML('<ul id="Test"><li></ul></li>')
doc.errors # => [#<Nokogiri::XML::SyntaxError: Unexpected end tag : li>]

在解析DocumentFragment时会看到相同的内容:

doc = Nokogiri::HTML::DocumentFragment.parse('<ul id="Test"><li></ul></li>')
doc.errors # => [#<Nokogiri::XML::SyntaxError: Unexpected end tag : li>]

它返回相同的内容:

parsed = Nokogiri::HTML('<ul id="Test"><li></ul></li>') do |config|
  config.strict
end
parsed.errors # => [#<Nokogiri::XML::SyntaxError: Unexpected end tag : li>]