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

时间:2012-07-26 02:37:05

标签: html ruby nokogiri

我正在从网络表单中收集一些HTML格式的内容。在保存这个HTML内容之前,我想对它进行快速的健全性检查,以确保它看起来格式正确(没有未关闭的标签,没有无效的标记)。

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

<p>foo</p><h1>Unclosed H1<p>bar</p>

并发现诸如未公开的h1标签之类的内容?

我认为Nokogiri会来这里救援,但不是:

>> Nokogiri::HTML::DocumentFragment.parse("<p>foo</p><h1>Unclosed H1<p>bar</p>").errors
=> []

1 个答案:

答案 0 :(得分:1)

您是否尝试过w3c_validators

[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>');

这为您提供了非常详细的验证结果。

或许如果您只想查看结束标记,可能会Nokogiri::XML::Document.parse().errors,但这可能不起作用,除非doctype是XHTML,因为其他doctype中的一些HTML元素甚至不需要关闭标记。 w3c_validators做得更好