【问题标题】:How can I detect errors in an HTML document fragment with Ruby?如何使用 Ruby 检测 HTML 文档片段中的错误?
【发布时间】:2012-07-26 02:37:04
【问题描述】:

我正在从 Web 表单中收集一些 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
=> []

【问题讨论】:

    标签: html ruby nokogiri


    【解决方案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 做得更好

    【讨论】:

    • w3c_validators gem 似乎包含了 W3C 的在线验证服务。我想要一个不需要网络连接的解决方案。我将尝试将我的 HTML 片段注入到具有 XHTML 文档类型的 HTML 文档中,以查看 Nokogiri 是否会捕获未闭合的标签然后...
    猜你喜欢
    • 2021-04-12
    • 1970-01-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多