如何使用 C# 验证 html 文件?

Posted

技术标签:

【中文标题】如何使用 C# 验证 html 文件?【英文标题】:How do I validate a html file with C#? 【发布时间】:2011-04-20 17:06:46 【问题描述】:

我有一个接收 html 文件的 C# 应用程序。我想解析和验证它。在输出时它将返回一个错误列表或我的 html 是有效的。

有人知道我该怎么做吗?

【问题讨论】:

What is the best way to parse html in C#? 的可能重复项 这个问题的验证部分使它与简单解析 HTML 的问题截然不同。 没错,我对解析h​​tml不感兴趣,我有兴趣验证它是否存在可能的错误。 【参考方案1】:

框架版本 1.0 (!) Microsoft.mshtml.dll 中有一个不起眼的 DLL,这是 框架中 处理 DOM 的唯一方法。如果 HTML 是 XHTML 并且是有效的 XML,那么您可以使用 XML,否则这是唯一的机会。

【讨论】:

我很惊讶这是处理 DOM 的唯一方法。 hmmm,请解释一下如何使用 xml 验证一个非常复杂的 html 文件。我也想过这个,我认为这不是最好的方法。 在什么框架下?没有人提到框架。 (哦,我们必须诉诸名字吗?) 它并不那么晦涩,它是 Internet Explorer 的 PIA。不是框架的一部分,它是一个 COM 互操作库。 IE 是否是一个好的 HTML 验证器,咳咳,值得商榷。【参考方案2】:

我会运行W3C Markup Validation service 的本地实例并通过API 与其通信

【讨论】:

我不知道有这样的 API,很好的发现。【参考方案3】:

您可以使用 HTML Tidy。 .NET 有一个包装器,名为 TidyManaged

【讨论】:

TidyManaged 没有提供任何功能性的 dll 对此提出了一些问题,包括文件输出甚至不起作用(我确认了它,尽管它显然已经被修补了)。在问题页面上有一个指向 freethenation 版本的链接,该版本需要 libtidy32.dll 和 libtidy64.dll,所以我按照上面的 gcores 链接并适当地重命名了 32 位和 64 位版本。花了一段时间才弄清楚,所以我想我会在这里发布。

以上是关于如何使用 C# 验证 html 文件?的主要内容,如果未能解决你的问题,请参考以下文章

Asp.net Core-在使用 javascript 或 C# 上传之前选择和验证 excel 文件?

如何在使用本地 CRL 文件(C#)的验证过程中检查客户端证书吊销

如何避免 SaveFileDialog C# 中的文件名验证

C# 如何验证来自电子邮件的数字签名(编码 SeveBit)

如何有效的使用C#读取文件

如何使用 PowerShell 或 C# 将网页保存到 HTML 文件中?