Java库用于压缩HTML文件?

13

有没有人知道一些好用的Java库(或单独的方法),可以从HTML文件中去除额外的空格、换行符和制表符等,使得HTML文件基本上被转换成了一行。

谢谢。

更新: 看起来没有现成的库能做到这点,所以我创建了我的开源项目来解决这个任务:http://code.google.com/p/htmlcompressor/

5个回答

25

6

个人而言,我只在服务器上启用了HTTP压缩,并且保留了我的可读HTML。

但是,对于您想要的内容,您可以使用String.replaceAll()函数,并使用与您指定的正则表达式匹配的方式。从我的经验来看,可以这样写:

small=large.replaceAll("\\s{2,}"," ");

唯一的问题是,如果您有一个包含空格的字符串,那么这些空格也将被删除。此外,它还会破坏很多HTML格式,例如"<table border=1.."将变成"<tableborder=1.." HTML解析器将无法处理。 :P - Suroot
1
@Suroot 不,没事。它会将多个空格替换为一个。 - sblundy
那就是一些基本的压缩,这就是我目前正在做的。如果你想完美地去除所有可能的字符(在标签内外应用不同的规则),那么它会变得更加深入。我认为这是一个常见的任务,希望有人已经做得很好了。 - serg
1
@Suroot 浏览器将多个空格转换为单个空格。例如,您的两个“Hello Worlds”看起来相同。如果您想要多个空格,您需要使用@nbsp;。 - sblundy
1
当然,如果您在<pre>标记内依赖多个空格进行格式化,这将变得混乱不堪。 - Evan
显示剩余3条评论

2

请小心处理。pre和textarea元素内的文本将会被破坏。此外,script元素内的嵌入式javascript必须以分号结尾。最后,如果您使用HTML注释来编写嵌入式javascript(以避免一些旧浏览器的错误行为),这将最终注释掉整个嵌入式javascript代码。

你为什么要这样做?如果您想减少HTML的下载大小,那么您只需要一个GZIP过滤器即可。


0

假设希望通过优化网络传输的字节数来缩小HTML,为什么不让HTTP服务器来完成这项工作呢?请阅读此处

这个会起作用吗?不幸的是,它并不免费。


已经在使用它。但我仍然希望能够进行压缩。 - serg
它必须是Java吗?它必须是免费的吗? - TofuBeer
如果您正在应用HTTP压缩,那么在HTML中折叠空格就毫无意义了 - 最终结果将非常接近,对于通过电线传输的数据大小来说并不重要。折叠空格只会增加另一个预部署步骤。 - Lawrence Dol

-1
input.replaceAll("\s+", " ");

将任何空格转换为单个空格


但它也会将任何单个空格替换为单个空格,是浪费计算资源的。 - Lawrence Dol
当然,如果您在<pre>标签内依赖多个空格进行格式化,那么这将会出现问题。 - Evan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接