gpt4 book ai didi

java - JTidy 无法处理脚本元素内的 HTML 标签

转载 作者:行者123 更新时间:2023-11-30 07:01:31 24 4
gpt4 key购买 nike

(这是几天前 a problem 的后续,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;但我找不到任何关于如何处理它的文档。搜索了一下,我发现this has been fixed in tidy-html5 ;它似乎只在 Java 端口 JTidy 中被破坏。

再搜索一下,发现我用的是最新的JTidy,根据其SourceForge page ; r938 版本是我的 Maven 存储库中的版本。 (实际上,源代码已在沙箱中解压,以便我可以调试此问题。)我上面链接的错误报告日期为 2015 年; JTidy r938于2009年问世。

我认为 JTidy 处理此问题的方式正确吗?如果是这样,我应该尝试修复它,还是已经在某个私有(private)分支中解决了这个问题?我不会称自己为解析器/词法分析器专家,但如果必须的话我可以蒙混过关。

最佳答案

这确实是 JTidy 中的一个错误。遗憾的是,我已经修复了它(以及其他问题),但最终没有发布新版本,因为我没有时间再开发 JTidy。

代码在 subversion 中可用,如果您从 trunk 中查看最新版本并构建它,您的程序应该可以运行。

我还创建了一个名为 CodeUpdateAndJava5 的分支,其中我使代码更接近 tidy 工具的行为(在他们开始开发 html5 版本之前),并开始添加更多现代 java 功能。该代码也可以工作;不过我没有发布任何基于它的版本。

根据您的需要,jsoup library可能更适合您,并且正在维护和更新。

关于java - JTidy 无法处理脚本元素内的 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40849872/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com