Java Document 工具类

1、说明

Java 对本地HTML文件的读取和写入的工具类,可以用来修改静态HTML的内容。

2、Maven包

需要引入jsoup包


    org.jsoup
    jsoup
    1.11.3
    compile

3、code

package top.zywork.common;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Map;

/**
 * @program: zywork-common
 * @description: 文档解析工具类
 * @author: 危锦辉 http://wjhsmart.vip
 * @create: 2019-09-02 11:26
 */
public class DocumentUtil {

    /**
     * 传入文件路径 传入参数Map 组合后获取document
     * @param fileUrl 文件路径
     * @param map 参数
     * @return
     * @throws IOException
     */
    public static Document getDocument(String fileUrl, Map map) throws IOException {
        File file = new File(fileUrl);
        return getDocument(file, "UTF-8", map);
    }

    /**
     * 传入文件路径 传入参数Map 转码方式 获取document
     * @param fileUrl 文件路径
     * @param charsetName 编码,如:UTF-8
     * @param map 参数
     * @return
     * @throws IOException
     */
    public static Document getDocument(String fileUrl, String charsetName, Map map) throws IOException {
        File file = new File(fileUrl);
        return getDocument(file, charsetName, map);
    }

    /**
     * 传入文件 传入参数 使用默认UTF-8
     * @param file 需要解析的文件
     * @param map 参数
     * @return
     * @throws IOException
     */
    public static Document getDocument(File file, Map map) throws IOException {
        return getDocument(file, "UTF-8", map);
    }

    /**
     * 读取文件到Document
     * @param file 文件
     * @param charsetName 编码
     * @param map 参数
     * @return
     * @throws IOException
     */
    public static Document getDocument(File file, String charsetName, Map map) throws IOException {
        // 解析模板文件为 doc
        Document doc = Jsoup.parse(file, charsetName);
        Element element = null;
        // 获取元素并操作元素对象赋值
        for (Map.Entry entry : map.entrySet()) {
            element = doc.getElementById(entry.getKey());
            if (element != null) {
                element.html(entry.getValue()==null?"":entry.getValue());
            }
        }
        // 把超文本语音html转换为可扩展超文本语句xhtml
//        doc.outputSettings().syntax(Document.OutputSettings.Syntax.xml).escapeMode(Entities.EscapeMode.xhtml);
        return doc;
    }

    /**
     * 传入到哪个文件路径 传入生成的document
     * @param fileUrl 需要生成文件的路径
     * @param doc 生成的文档
     * @throws IOException
     */
    public static void write(String fileUrl, Document doc) throws IOException {
        File file = new File(fileUrl);
        write(file, "UTF-8", doc);
    }

    /**
     * 传入到哪个文件路径 传入生成的document
     * @param fileUrl 文件路径
     * @param charsetName 编码
     * @param doc 文档
     * @throws IOException
     */
    public static void write(String fileUrl,String charsetName, Document doc) throws IOException {
        File file = new File(fileUrl);
        write(file, charsetName, doc);
    }

    /**
     * 传入到哪个文件 传入生成的document
     * @param file
     * @param doc
     * @throws IOException
     */
    public static void write(File file, Document doc) throws IOException {
        write(file, "UTF-8", doc);
    }

    /**
     * 将document内容写入文件中
     * @param file
     * @param charsetName
     * @param doc
     * @throws IOException
     */
    public static void write(File file, String charsetName, Document doc) throws IOException {
        if (!file.exists()) {
            file.createNewFile();
        }
        FileOutputStream fos = new FileOutputStream(file, false);
        // 设置输出流
        OutputStreamWriter osw = new OutputStreamWriter(fos, charsetName);
        // 讲doc写入文件中
        osw.write(doc.html());
        osw.close();
    }
}

 

你可能感兴趣的:(Java)