【问题标题】:Java lib to compress html file?Java lib压缩html文件?
【发布时间】:2020-04-03 18:28:57
【问题描述】:

有没有人知道任何可以从 html 文件中去除多余空格(换行符、制表符等)的好的 java 库(或单一方法)?所以html文件基本上变成了1行。

谢谢。

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

【问题讨论】:

    标签: java html compression


    【解决方案1】:

    看起来没有库可以做到这一点,所以我创建了自己的开源项目来解决这个任务,也许有人会觉得它有帮助:http://code.google.com/p/htmlcompressor/

    【讨论】:

      【解决方案2】:

      就我个人而言,我刚刚在服务器中启用了 HTTP 压缩,并让我的 HTML 可读。

      但是对于你想要的,你可以使用 String.replaceAll() 和一个匹配你指定的正则表达式。在我的脑海中,类似于:

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

      【讨论】:

      • 唯一的问题是,如果你有一个包含空格的字符串,那么这些空格也会被删除。它还会破坏很多 HTML 格式,例如“
      • @Suroot 不,没关系。它用一个替换多个空格。
      • @sblundy 但是如果“Hello World”是应该显示的,“Hello World”将变成“Hello World”,这不是你想要的。
      • @Suroot 浏览器将多个空格转换为一个空格。例如,您的两个“Hello Worlds”看起来相同。如果你想要多个空格,你需要使用@nbsp;。
      • 当然,如果您在
         标签内依赖多个空格进行格式化,这将是 fubared。
      【解决方案3】:

      对此要小心。 pre 和 textarea 元素内的文本将被损坏。此外,脚本元素内的内联 javascript 必须以 column; 结尾。最后,如果您使用 html cmets 编写内联 javascript(以避免一些旧的浏览器错误行为),这最终将注释掉整个内联 javascript 代码。

      你为什么要这样做?如果您想减小 html 的下载大小,那么您只需要一个 GZIP filter

      【讨论】:

        【解决方案4】:

        假设希望使 HTML 更小以优化通过网络发送的字节,为什么不让 HTTP 服务器来完成这项工作?阅读here

        this 会起作用吗?可惜不是免费的。

        【讨论】:

        • 已经在使用了。不过我还是想压缩一下。
        • 必须是Java吗?它必须是免费的吗?
        • 如果您正在应用 HTTP 压缩,空格折叠 HTML 完全没有意义 - 最终结果将如此接近,以至于与网络上的数据大小无关。 WS 折叠只是增加了另一个预部署步骤。
        【解决方案5】:

        您需要以下库:

        com.googlecode.htmlcompressor/htmlcompressor/1.5.2
        com.google.javascript/closure-compiler/r1043
        com.yahoo.platform.yui/yuicompressor/2.4.6

        版本不是最新的,但它们是兼容的。
        Closure 用于内联 JavaScript,yui 用于内联 CSS。

        import com.googlecode.htmlcompressor.compressor.HtmlCompressor;
        import com.googlecode.htmlcompressor.compressor.ClosureJavaScriptCompressor;
        import com.google.javascript.jscomp.CompilationLevel;
        
        public class Html {
          private static final HtmlCompressor compressor = new HtmlCompressor();
          static {
            compressor.setPreserveLineBreaks(false);
            compressor.setCompressCss(true);
            compressor.setCompressJavaScript(true);
            compressor.setJavaScriptCompressor(
              new ClosureJavaScriptCompressor(CompilationLevel.WHITESPACE_ONLY)
            );
          }
        
          public static String minify(String html) {
            return compressor.compress(html);
          }
        }
        

        【讨论】:

          【解决方案6】:
          input.replaceAll("\s+", " ");
          

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

          【讨论】:

          • 但它也会用单个空格替换任何单个空格,不是吗?这是浪费的周期。
          • 当然,如果您在
             标签内依赖多个空格进行格式化,这将是 fubared。
          猜你喜欢
          • 1970-01-01
          • 2018-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-28
          • 1970-01-01
          • 2012-01-23
          相关资源
          最近更新 更多