java - 正确使用JTidy净化HTML

标签 java tidy htmltidy jtidy

我正在尝试使用 JTidy (jtidy-r938.jar) 来清理输入的 HTML 字符串,但我似乎无法正确设置默认设置。通常,诸如“hello world”之类的字符串在整理后最终会变成“helloworld”。我想展示我在这里做的事情,非常感谢任何指点:

假设rawHtml是包含输入(真实世界)HTML 的字符串。这就是我正在做的:

        Tidy tidy = new Tidy();
        tidy.setPrintBodyOnly(true);

        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PrintStream ps = new PrintStream(baos);

        tidy.parse(new StringReader(rawHtml), ps);
        return baos.toString("UTF8");   

首先,上面的代码看起来有什么根本性的错误吗?我似乎得到了奇怪的结果。

例如,考虑以下输入:

<p class="MsoNormal" style="text-autospace:none;"><font color="black"><span style="color:black;">???</span></font><b><font color="#7f0055"><span style="color:#7f0055;font-weight:bold;">private</span></font></b><font color="black"><span style="color:black;"> String parseDescription</span></font><font>

输出是:

<p class="MsoNormal" style="text-autospace:none;"><font color= "black"><span style="color:black;">&nbsp;&nbsp;&nbsp;</span></font> <b><font color="#7F0055"><span style= "color:#7f0055;font-weight:bold;">private</span></font></b><font color="black"><span style="color:black;">String parseDescription</span></font></p>

所以,

“public String parseDescription”变成“publicString parseDescription”

提前致谢!

最佳答案

看看 JTidy 是如何配置的:

StringWriter writer = new StringWriter();
tidy.getConfiguration().printConfigOptions(writer, true);
System.out.println(writer.toString());

也许它会弄清楚导致问题的原因。

有什么奇怪的?实际输出和预期输出的小例子……也许?

关于java - 正确使用JTidy净化HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2547000/

相关文章:

sublimetext3 - 我不知道如何让 sublimelinter-html-tidy 工作

javascript - 整洁:避免移动脚本标签

java - Play 框架应用的监控工具

java - 使用 Retrofit 2 重试请求

java - 在 Eclipse Che 中调试 Java 测试

r - 打印同表中的关系和相关性的显着性

Php 整洁和文本区域

java - 拍打编译错误gradle Java构建

php - 为什么我的 PHP exec() 在 bash tidy 命令上无法打开文件?

c++ - 这个 c++ html tidy 程序有什么问题