最近项目中要使用HTML转word,html转PDF等,在这些转换中,HTML都必须是严格格式化好的。
网上找了一个jtidy工具(jtidy下载)可以将html转为xhtml,还是挺好用的,这里记录一下:
public class HtmlToXhtmlUtil {
public static String html2xhtml(String html) {
ByteArrayInputStream stream = new ByteArrayInputStream(html.getBytes());
ByteArrayOutputStream tidyOutStream = new ByteArrayOutputStream();
// 实例化Tidy对象
Tidy tidy = new Tidy();
// 设置输入
tidy.setInputEncoding("gb2312");
// 如果是true 不输出注释,警告和错误信息
tidy.setQuiet(true);
// 设置输出
tidy.setOutputEncoding("gb2312");
// 不显示警告信息
tidy.setShowWarnings(false);
// 缩进适当的标签内容。
tidy.setIndentContent(true);
// 内容缩进
tidy.setSmartIndent(true);
tidy.setIndentAttributes(false);
// 只输出body内部的内容
tidy.setPrintBodyOnly(true);
// 多长换行
tidy.setWraplen(1024);
// 输出为xhtml
tidy.setXHTML(true);
// 去掉没用的标签
tidy.setMakeClean(true);
// 清洗word2000的内容
tidy.setWord2000(true);
// 设置错误输出信息
tidy.setErrout(new PrintWriter(System.out));
tidy.parse(stream, tidyOutStream);
return tidyOutStream.toString();
}
}
或是使用jsoup实现:
Document doc = Jsoup.parse(html);
doc.outputSettings().syntax(Document.OutputSettings.Syntax.xml).escapeMode(Entities.EscapeMode.xhtml); //转为 xhtml 格式