如何使用Ruby检测HTML文档片段中的错误?

如何使用Ruby检测HTML文档片段中的错误?,html,ruby,nokogiri,Html,Ruby,Nokogiri,我正在从web表单收集一些HTML格式的内容。在保存此HTML内容之前,我想对其进行一次快速的健全性检查,以确保其格式良好(没有未关闭的标记,没有无效的标记) 使用Ruby和/或任何流行的gems,我是否可以检查HTML片段字符串,如: <p>foo</p><h1>Unclosed H1<p>bar</p> 你试过了吗 [1]pry(main)>需要“w3c\U验证器” =>正确 [2] pry(主)>包括W3C校验仪 =>对象 [3

我正在从web表单收集一些HTML格式的内容。在保存此HTML内容之前,我想对其进行一次快速的健全性检查,以确保其格式良好(没有未关闭的标记,没有无效的标记)

使用Ruby和/或任何流行的gems,我是否可以检查HTML片段字符串,如:

<p>foo</p><h1>Unclosed H1<p>bar</p>
你试过了吗

[1]pry(main)>需要“w3c\U验证器”
=>正确
[2] pry(主)>包括W3C校验仪
=>对象
[3] pry(main)>p MarkupValidator.new.validate_文本(“foo

Unclosed H1bar

”);
这将为您提供非常详细的验证结果


或者,如果您只想检查结束标记,可以改为
Nokogiri::XML::Document.parse().errors
,但这可能不起作用,除非doctype是XHTML,因为其他doctype中的一些HTML元素甚至不需要结束标记<代码>w3c_验证程序做得更好

w3c_验证程序gem似乎包装了w3c的在线验证服务。我想要一个不需要网络连接的解决方案。我将尝试将我的HTML片段注入带有XHTML doctype的HTML文档,看看Nokogiri是否会捕获未关闭的标记,然后。。。
>> Nokogiri::HTML::DocumentFragment.parse("<p>foo</p><h1>Unclosed H1<p>bar</p>").errors
=> []
[1] pry(main)> require 'w3c_validators'
=> true
[2] pry(main)> include W3CValidators
=> Object
[3] pry(main)> p MarkupValidator.new.validate_text('<!DOCTYPE html><html><body><p>foo</p><h1>Unclosed H1<p>bar</p></body></html>');