22

我在我的应用程序中嵌入了 HTML Tidy 来清理传入的 HTML。但是 Tidy 有大量的错误,直接在源代码中修复它们是我最糟糕的噩梦。整洁的源代码是不可读的可憎之物。数千行函数,糟糕的变量命名,意大利面条代码等。这真是太可怕了。

更糟糕的是,官方开发似乎已经停止。在过去的 12 个月里,官方 CVS 回购中有3笔写交易。但它已经死了,埋葬的时间比这要长得多……

所以我正在寻找一个 OSS C 或 C++ 应用程序/库,它可以做 Tidy 可以做的事情(当感觉像它时):修复错误的 HTML 标记并将其转换为有效的 XHTML(这是我感兴趣的部分)。我的意思是各种不好的标记。

那里有类似的东西吗?

编辑:我既需要它来通过 XML 处理工具对 DOM 树进行操作,又需要它来普遍遵守 XHTML 规范。我的应用程序需要接受来自用户的 HTML(这通常以各种方式无效)并输出有效的 XHTML。它需要能够处理通常不会在浏览器中显示的 HTML,因为用户手动编辑它并且事后没有检查。

Tidy 的纠错解析器的替代品......这并不糟糕。如果源代码可读并且我可以自己修复问题,或者如果有活跃的开发人员及时提供错误修复,我不介意错误。

4

4 回答 4

2

你能告诉我们你打算用这个工具做什么吗?例如,您是要修复静态网页,还是要在其他操作之前进行某种过滤步骤,以便某些工具可以处理有问题的网页?

就我个人而言,只要我需要,我就会在 Python 的 BeautifulSoup 或 lxml 上编写自己的工具 --- 它最多只有十几行脚本,可以完成我想要的大部分工作。

于 2010-02-21T18:55:05.647 回答
2

有一个新的、漂亮的、合适的 HTML 5 支持 Tidy,所以旧的、丑陋的Tidy的替代品是TidyGitHub 存储库)。

于 2015-09-29T18:52:22.760 回答
1

试试漂亮的差异。这是一种非常出色的美化算法,它不对您的输入做出任何假设。

http://prettydiff.com/?m=beautify&html

于 2011-12-10T12:49:47.147 回答
0

对于真正修复代码的东西,最好的选择仍然是 HTML Tidy。有很多 linter,但除了 Tidy 之外,没有任何东西可以修复 HTML 错误。

乍一看,现代 OOP 程序员可能会认为源代码是不可读的可憎之物,但在 C 世界中,Tidy 是一个非常复杂的库,它使用了许多高级 OO 概念并提供了一个非常周到的接口,几乎暴露了它的所有功能在纯 C API 中。

一个随便的开发者会迷路,但一旦沉浸其中,代码还是相当漂亮的。诚然,命名约定一个混合的坏,但 PR 是受欢迎的!

于 2017-10-11T01:30:36.750 回答