似乎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?
答案 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>]