2012-07-26 79 views
2

我正在从网络表单收集一些HTML格式的内容。在保存此HTML内容之前,我希望对其进行快速的完整性检查,以确保其格式正确(没有未封闭的标签,没有无效的标记)。如何使用Ruby检测HTML文档片段中的错误?

使用Ruby和/或与任何流行的宝石,我可以检查一个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

你试过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做得更好

+0

w3c_validators gem似乎包装了W3C的在线验证服务。我想要一个不需要网络连接的解决方案。我会尝试使用XHTML doctype将HTML片段注入HTML文档,以查看Nokogiri是否会捕获未封闭的标签,然后... – 2012-07-27 05:26:36