(这是我几天前我遇到的问题的后续,jtidy在300k html文档中报告了3个错误,但没有报告在哪里。我发现似乎是导致错误的原因,我对原因有很大的怀疑,但我还没有决定该怎么做。)
这是一个小的独立HTML表达式,导致Jtidy报告错误:
<html>
<body>
Some text.
<script type="text/javascript">
var foo = "Press <u>ESC</u> to continue";
</script>
</body>
</html>
JavaScript字符串常数包含HTML标签,并且这些始终将JTIDY丢掉 - 删除下划线元素,Jtidy完美地完成解析。更准确地说,Jtidy的解析器在关闭标签上报告了一个错误。开头标签很好(输出可能有些不对劲,但这足以满足我以后的目的)。错误报告即使您评论字符串:
// Any closing tags here at all will <b>throw JTidy off</b>.
我认为可以肯定地说上述有效的HTML;但是我找不到有关该怎么做的任何文件。搜索,我发现这已经在整洁的html5中固定。它似乎仅在Jtidy(Java端口)中被打破。
搜索更多,我发现我正在使用最新的jtidy。R938版本是我的Maven Repo中的版本。(实际上,源是在沙箱中解开包装的,因此我可以调试此问题。)我上面链接的错误报告日期为2015年;Jtidy R938于2009年发布。
我相信jtidy处理此操作错误吗?如果是这样,我应该尝试修复它还是在某些私人分支中解决了?我不会称自己为解析器/Lexer专家,但是如果需要的话,我可能会混乱。
这确实是jtidy中的一个错误。可悲的是,我已经解决了它(和其他问题),但最终没有发布新的版本,因为我没有时间再从事Jtidy工作了。
该代码可以在颠覆中可用,如果您查看中继线的最新修订并构建它,则您的程序应起作用。
我还制作了一个名为CodeUpdateandjava5的分支,其中我使代码更接近整洁工具的行为(在他们开始使用HTML5版本之前),并开始添加更现代的Java功能。该代码也可以工作;我没有根据它发布任何发行版。
根据您需要的内容,JSOUP库可能对您有利,并且正在维护和更新。