2012-07-26 52 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