我正在从网络表单中收集一些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
=> []
答案 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
做得更好