`
我想我是海
  • 浏览: 213649 次
社区版块
存档分类
最新评论

Html2Js--Html代码到Javascript文件的转换

阅读更多

之前在网上有一些现成的转换工具的,不过有些是Javascript,只限于Web环境下使用,有些是本地程序,但是没有编码的选项,只是单纯的提供输入及输出,工作的时候需要处理些特殊编码的文件的时候就没法子了。没办法,只有自已写一个转换工具,满足自已的需要。因为时间关系,暂时写了一个在控制台下运行的程序,谁有兴趣,帮忙做个界面出来也不错。呵,下面是所有代码。可惜,我机子上没用Java2Html的插件,要不代码就没这么难看了。。。不过将就下了。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.nio.charset.Charset;

public class Html2Js {
    private String source;

    private String dist;

    private String encoding;

    public static String html2js(String html) {
        StringBuffer sb = new StringBuffer(html);
        StringBuffer js = new StringBuffer();
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == '"') {
                sb.replace(i, i, "\\");
                i++;
            }
        }
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == '\n') {
                sb.replace(i, i, "\"+");
                i = i + 2;
            }
        }
        for (int i = 0; i < sb.length(); i++) {
            if (sb.charAt(i) == '\n') {
                sb.replace(i + 1, i + 1, "\"");
                i = i + 2;
            }
        }
        js.append("document.write(\"");
        js.append(sb);
        js.append("\");");
        return js.toString();
    }

    public static void main(String[] arg) {
        if (arg.length == 0) {
            System.out
                    .println("useage: java Html2Js <sourcePath> [distPath] [encoding]\n"
                            + " -sourcePath: specify your source HTML file\n"
                            + " -distPath: specify your expect path of the file generate by program,defaul the same as sourcePath\n"
                            + " -encoding: specify the encoding of the source file,the output use the same encoding,if not specify,use the system file encoding");
            return;
        }
        // prepare
        Html2Js tool = new Html2Js();
        tool.source = arg[0];

        if (arg.length > 1)
            tool.dist = arg[1];
        else
            tool.dist = tool.source.substring(0, tool.source.lastIndexOf('.'))
                    + ".js";

        if (arg.length > 2)
            tool.encoding = arg[2];
        else
            tool.encoding = System.getProperty("file.encoding");

        // read the source
        try {
            String html = tool.getSource().replaceAll("\r", "");
            tool.genFile(tool.dist, html2js(html), tool.encoding);
            System.out.println("html2js finish!");
        } catch (FileNotFoundException e) {
            System.err.println("Fatal error! source file : " + tool.source
                    + "not found!");
            throw new RuntimeException(e.getMessage());
        } catch (IOException e) {
            System.err.println("Fatal error!");
            throw new RuntimeException(e.getMessage());
        }
    }

    /**
     * 从源文件读进文本
     *
     * @throws IOException
     */
    public String getSource() throws IOException {
        StringBuffer sb = new StringBuffer();
        Reader reader = new InputStreamReader(new FileInputStream(source),
                Charset.forName(encoding));
        int read = 0;
        char[] data = new char[1024];

        while ((read = reader.read(data, 0, 1024)) != -1) {
            sb.append(data, 0, read);
        }

        return sb.toString();
    }

    public void genFile(String fullFileName, String body, String encoding)
            throws IOException {
        File file = new File(fullFileName);
        FileOutputStream fos = null;

        fos = new FileOutputStream(file);

        OutputStreamWriter writer = new OutputStreamWriter(fos, Charset
                .forName(encoding));
        if (body != null && !"".equals(body)) {
            writer.write(body);
            writer.close();
        }
    }

    public void setDist(String dist) {
        this.dist = dist;
    }

    public void setEncoding(String encoding) {
        this.encoding = encoding;
    }
   
    public void setSource(String source) {
        this.source = source;
    }
}



分享到:
评论

相关推荐

    前端开源库-html2js-browserify

    这样做的好处是可以将HTML模板代码内联到JavaScript文件中,减少了网络请求,提高了页面加载速度。通过将HTML转换为JS,我们可以利用JavaScript的全部能力来处理模板,包括数据绑定、条件逻辑和循环等。 `...

    javascript经典特效---javascript代码自动生成.rar

    2. **代码生成库**:有一些JavaScript库如Babel,能够将ES6+的新特性转换为向后兼容的JavaScript代码,使得老版本浏览器也能运行。 3. **元编程**:JavaScript支持元编程,通过运行时修改自身代码来生成新的代码,...

    JS-HTML-Format.zip_html javascript

    标题"JS-HTML-Format.zip_html javascript"表明这是一个针对JavaScript和HTML代码格式化的工具,被封装在名为"JS-HTML-Format.zip"的压缩包内。这个工具专门设计来帮助前端开发者对代码进行美化和整理,尤其在处理...

    js-xlsx插件 HTML代码例子

    **HTML代码例子**通常涉及到如何在网页中集成js-xlsx插件,以便用户能够上传Excel文件、预览数据、编辑数据,并将修改后的数据导出为新的Excel文件。下面我们将详细介绍如何在HTML页面中使用js-xlsx。 首先,我们...

    将html文件转为微信小程序用的wxml文件html2wxml-master.zip

    本压缩包"html2wxml-master.zip"提供了一个工具,能够帮助开发者将HTML文件转换为WXML文件,使得现有HTML资源可以更方便地应用到微信小程序项目中。 这个工具的核心功能在于解析HTML文件并生成对应的WXML结构。HTML...

    JS代码格式整理工具einars-js-beautify

    einars-js-beautify可以轻松集成到开发工作流中,例如通过Git钩子在提交代码前自动格式化,或者在持续集成(CI)系统中作为构建步骤。此外,还可以通过API在Node.js项目中使用,实现代码格式化的自动化。 ### 六、...

    html-web转pdf项目-javascript-css-项目分享.zip

    3. JavaScript文件:包含转换逻辑,可能使用了jsPDF和html2canvas库。 4. 示例文件:用于测试转换效果的HTML页面。 5. 图像和其他资源:网页中引用的图片和其他媒体文件。 在实际应用中,开发者可能会遇到的一些...

    通过Js实现Html转换成Word下载

    这行代码会将ID为'myElement'的元素内容转换为Word并下载,文件名为'文件名'。 4. **保存文件**:最后,利用`FileSaver.js`库保存生成的Word文档到本地。例如: ```javascript saveAs(blob, 'download.docx'); ...

    前端项目-javascript-canvas-to-blob.zip

    - `script.js`:JavaScript脚本,实现了将Canvas转换为Blob的逻辑,以及可能的下载或上传功能。 - 可能存在的`style.css`:CSS样式文件,用于美化界面。 - 示例图片或其他资源:项目可能包含用于在Canvas上绘图的...

    javascript经典特效---图片转换效果.rar

    JavaScript中的图片转换效果通常涉及到以下关键知识点: 1. **DOM操作**:Document Object Model(DOM)是HTML和XML文档的编程接口。JavaScript通过DOM可以操作页面上的元素,例如获取、创建、修改或删除元素。在这...

    JSHTML转换(TXT版)

    “JSHTML转换”指的是在网页开发过程中,根据需要将HTML代码转换为JavaScript代码,或者将JavaScript代码转换为HTML代码的过程。这种转换有助于提高代码的灵活性和可维护性,尤其是在动态页面生成和前端框架的应用中...

    javascript经典特效---变化中获取颜色代码.rar

    在JavaScript中,颜色代码的处理和变化是一个广泛的话题,涉及到DOM操作、颜色转换、动画效果等多个方面。这个压缩包中的“变化中获取颜色代码.htm”很可能是包含示例代码的HTML文件,可以进一步学习和实践这些概念...

    代码高亮显示javascript插件

    "代码高亮显示JavaScript插件"是专门用于在Web页面中美化和突出显示JavaScript代码的工具,它能够将原始的黑白文本代码转换为具有不同颜色、字体和样式的视觉盛宴。本文将深入探讨这一主题,详细介绍JavaScript代码...

    JavaScript-Canvas-to-Blob-master

    1. `src/`:源代码目录,通常包含JavaScript文件,如`canvas-to-blob.js`,这是核心库文件。 2. `dist/`:发布目录,包含经过压缩和优化的版本,适合在生产环境中使用。 3. `demo/`:示例或测试页面,帮助开发者了解...

    Html-Js代码互转便利工具

    1. **HTML到JavaScript的转换**:当需要将HTML元素的事件绑定或属性修改转化为JavaScript代码时,此工具可以自动生成相应的JavaScript函数或表达式。例如,将一个`('Hello')"&gt;点击我&lt;/button&gt;`的HTML标签转换为独立...

    前端开源库-rehype-minify-javascript-script

    rehype-minify-javascript-script的核心功能在于,它可以对HTML文档中的JavaScript代码进行压缩,以减小文件大小,提高页面加载速度。它采用了诸如删除不必要的空白、注释、以及对变量和函数名进行混淆等常见压缩...

    C# to JavaScript转换器

    4. 将生成的JavaScript文件整合到Web项目中,替换原有的JavaScript代码。 5. 测试和调试生成的JavaScript代码,确保在浏览器环境中的正确运行。 综上所述,C#到JavaScript转换器,特别是SharpKit,为Web开发提供了...

    Html与Javascript互相转换工具

    在HTML中,JavaScript代码可以内联写在`&lt;script&gt;`标签内,也可以通过`src`属性引用外部JS文件。 本工具的核心功能可能是将HTML文件中的内联JavaScript提取出来,转化为独立的JS文件,便于管理和维护。反之,它也...

    Laravel开发-utilities 将 PHP 变量转换为 JavaScript 变量

    2. **JavaScript资产(JavaScript Assets)**:如果你的变量非常复杂或者包含大量数据,可能需要创建一个JavaScript文件来接收这些数据。在Laravel的`resources/js`目录下创建一个新的JS文件,然后通过`mix`编译。在...

Global site tag (gtag.js) - Google Analytics