package org.liufei.jweb.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* 由java生成HTML标记代码。
*
* @author 刘飞
*
*/
public final class HtmlUtils {
private static final String X = ",";
private static final String STRING = "=";
private static final String REGEX = ":";
private static final String TEXT_CSS = "text/css";
private static final String STYLESHEET = "stylesheet";
private static final String HREF = "href";
private static final String REL = "rel";
private static final String LINK = "link";
private static final String SRC = "src";
private static final String SCRIPT = "script";
private static final String TYPE = "type";
private static final String TEXT_JAVASCRIPT = "text/javascript";
private static final String TABLE = "table";
private static final String TR = "tr";
private static final String TH = "th";
private static final String TD = "td";
private static final String DIV = "div";
private static final String SPAN = "span";
private static final String SELECT = "select";
private static final String OPTION = "option";
private static final String IMG = "img";
private static final String A = "a";
private static final String INPUT = "input";
private HtmlUtils() {
}
/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param keys
* 该html标记的属性名称。
* @param values
* 该html标记的属性值。
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, String[] keys,
Object[] values, Object contentHTML) {
StringBuffer buffer = new StringBuffer("");
buffer.append(htmlTagStartCreator(tagName, keys, values));
buffer.append(contentHTML);
buffer.append(htmlTagEndCreator(tagName));
return buffer.toString();
}
/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param properties
* 标签属性字符串, 属性之间以','分隔, 属性键值间以':'或'='分隔
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, String properties,
Object contentHTML) {
if (properties == null) {
return htmlCreator(tagName, contentHTML);
} else if (properties.equals("") || properties.length() == 0) {
return htmlCreator(tagName, contentHTML);
} else {
String[] props = properties.split(X);
int size = props.length;
if (properties.indexOf(X) != -1) {// 多个属性
if (properties.indexOf(REGEX) != -1) {
String[] keys = new String[size];
Object[] values = new Object[size];
for (int i = 0; i < size; i++) {
String _prop = props[i].trim();
String[] keyValue = _prop.split(REGEX);
keys[i] = keyValue[0].trim();
values[i] = keyValue[1].trim();
}
return htmlCreator(tagName, keys, values, contentHTML);
} else if (properties.indexOf(STRING) != -1) {
String[] keys = new String[size];
Object[] values = new Object[size];
for (int i = 0; i < size; i++) {
String _prop = props[i].trim();
String[] keyValue = _prop.split(STRING);
keys[i] = keyValue[0].trim();
values[i] = keyValue[1].trim();
}
return htmlCreator(tagName, keys, values, contentHTML);
} else {// 无属性
return htmlCreator(tagName, contentHTML);
}
} else if (properties.indexOf(STRING) != -1) {// 一个属性, 以'='分隔
String[] keys = new String[size];
Object[] values = new Object[size];
String _prop = props[0].trim();
String[] keyValue = _prop.split(STRING);
keys[0] = keyValue[0].trim();
values[0] = keyValue[1].trim();
return htmlCreator(tagName, keys, values, contentHTML);
} else if (properties.indexOf(REGEX) != -1) {// 一个属性, 以':'分隔
String[] keys = new String[size];
Object[] values = new Object[size];
String _prop = props[0].trim();
String[] keyValue = _prop.split(REGEX);
keys[0] = keyValue[0].trim();
values[0] = keyValue[1].trim();
return htmlCreator(tagName, keys, values, contentHTML);
} else {// 无属性
return htmlCreator(tagName, contentHTML);
}
}
}
/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param properties
* 标签属性
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName,
Map<String, Object> properties, Object contentHTML) {
if (properties == null) {
return htmlCreator(tagName, contentHTML);
} else {
int size = properties.size();
String[] keys = new String[size];
Object[] values = new Object[size];
Set<String> keysSet = properties.keySet();
int i = 0;
for (String key : keysSet) {
keys[i] = key;
values[i] = properties.get(key);
i++;
}
return htmlCreator(tagName, keys, values, contentHTML);
}
}
/**
* 创建HTML代码。
*
* @param tagName
* html标记名称。
* @param contentHTML
* 该html标记所包含的子html标记或内容。
* @return 该HTML代码标记片段。
*/
public static String htmlCreator(String tagName, Object contentHTML) {
return htmlCreator(tagName, null, null, contentHTML);
}
/**
* html开始标记生成。
*
* @param tagName
* tagName 标记名称
* @param keys
* 属性名称数组
* @param values
* 属性值数组
* @return
*/
private static String htmlTagStartCreator(String tagName, String[] keys,
Object[] values) {
StringBuffer buffer = new StringBuffer("");
if (tagName == null) {
throw new IllegalArgumentException("HTML标签名不能为空!");
} else if (tagName.length() == 0 || tagName.equals("")) {
throw new IllegalArgumentException("HTML标签名不能为空!");
}
if (keys == null || values == null) {
buffer.append("");
} else {
for (int i = 0; i < keys.length; i++) {
buffer.append(keys[i] + STRING + quotesMarks + values[i]
+ quotesMarks + " ");
}
}
return htmlTagStart + tagName + " " + buffer.toString() + htmlTagEnd;
}
/**
* html结束标记创建。
*
* @param tagName
* 标记名称
* @return 如:</tagName>
*/
private static String htmlTagEndCreator(String tagName) {
return htmlTagEndStart + tagName + htmlTagEnd;
}
/**
* css的link标记。
*
* @param href
* css文件地址。
* @return
*/
public static String cssLinkCreator(String href) {
return htmlCreator(LINK, new String[] { REL, HREF, TYPE },
new Object[] { STYLESHEET, href, TEXT_CSS }, "");
}
/**
* javascript链接javascript文件。
*
* @param src
* javascript文件地址。
* @return
*/
public static String javascriptLinkCreator(String src) {
return htmlCreator(SCRIPT, new String[] { TYPE, SRC }, new Object[] {
TEXT_JAVASCRIPT, src }, "");
}
/**
* 简单的javascript的弹出对话框。
*
* @param message
* @return
*/
public static String javascriptAlertCreator(String message) {
return javascriptCreator("alert(\"" + message + " \") ;");
}
/**
* 创建javascript脚本代码字符串。
*
* @param functions
* javascript函数字符串。
* @return
*/
public static String javascriptCreator(Object functions) {
return htmlCreator(SCRIPT, new String[] { TYPE },
new Object[] { TEXT_JAVASCRIPT }, functions);
}
/**
* 创建javascript函数
*
* @param name
* 函数名称
* @param functionBody
* 函数体。
* @return
*/
public static String javascriptFunction(String name, String functionBody) {
return "\n\tfunction " + name + " {\n\t\t" + functionBody + "\n\t}\n";
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param ths
* 表格的TH内容
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTableCreator(String ths, Object[][] data) {
StringBuffer bufferTable = new StringBuffer("");
StringBuffer bufferTrs = new StringBuffer("");
if (ths != null) {
bufferTrs.append(trCreator(ths));
}
if (data == null) {
throw new IllegalArgumentException("参数不能为空!");
} else if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
StringBuffer bufferTr = new StringBuffer("");
for (Object col : row) {
bufferTr.append(tdCreator(col));
}
bufferTrs.append(trCreator(bufferTr.toString()));
}
}
bufferTable.append(tableCreator(bufferTrs.toString()));
return bufferTable.toString();
}
/**
* 创建以二维数组大小的表格。
*
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTrsCreator(Object[][] data) {
StringBuffer bufferTrs = new StringBuffer("");
if (data == null) {
throw new IllegalArgumentException("参数不能为空!");
} else if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
StringBuffer bufferTr = new StringBuffer("");
for (Object col : row) {
bufferTr.append(tdCreator(col));
}
bufferTrs.append(trCreator(bufferTr.toString()));
}
}
return bufferTrs.toString();
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @param arrayData
* 表格的一维数组数据, 一般作为菜单项。
* @return
*/
public static String simpleTrsCreator(Object[][] data, Object[] arrayData) {
return simpleTrsCreator(ArrayUtils.addAll(data, arrayData));
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @return
*/
public static String simpleTableCreator(Object[][] data) {
return simpleTableCreator("", data);
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表格的二维数组数据
* @param arrayData
* 表格的一维数组数据, 一般作为菜单项。
* @return
*/
public static String simpleTableCreator(Object[][] data, Object[] arrayData) {
return simpleTableCreator(ArrayUtils.addAll(data, arrayData));
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param ths
* 表格的TH内容
* @param data
* 表哥的二维数组数据
* @return
*/
public static String simpleTableCreator(String ths,
List<Map<Object, Object>> data) {
return simpleTableCreator(ths, ArrayListMapUtils.listMapToArray(data));
}
/**
* 将一个二维数组的数据放入到table表格中。
*
* @param data
* 表哥的二维数组数据
* @return
*/
public static String simpleTableCreator(List<Map<Object, Object>> data) {
return simpleTableCreator(null, data);
}
/**
* 数组和Map、List集合之间的转化。
*
* @author 刘飞
*
*/
public static class ArrayListMapUtils {
/**
* List<Map<Object, Object>>数据转化为二维数组
*
* @param data
* List<Map<Object, Object>>数据
* @return
*/
public static Object[][] listMapToArray(List<Map<Object, Object>> data) {
Object[][] arrayData = null;
if (data == null) {
throw new IllegalArgumentException("数据参数不能为空!");
}
int rows = data.size();
if (rows > 0) {
Set<Object> keySet = data.get(0).keySet();
int cols = keySet.size();
if (cols > 0) {
arrayData = new Object[rows][cols];
int r = 0;
for (Map<Object, Object> dataMap : data) {
Set<Object> keys = dataMap.keySet();
Iterator<Object> iter = keys.iterator();
int c = 0;
while (iter.hasNext()) {
arrayData[r][c] = dataMap.get(iter.next());
c++;
}
r++;
}
}
}
return arrayData;
}
/**
* 将二维数组的数据放入List<Map<Object, Object>>集合中。
*
* @param data
* 二维数组
* @return
*/
public static List<Map<Object, Object>> arrayToListMap(Object[][] data) {
List<Map<Object, Object>> listMapData = new ArrayList<Map<Object, Object>>();
if (data == null) {
throw new IllegalArgumentException("数据参数不能为空!");
}
if (data.length > 0 && data[0].length > 0) {
for (Object[] row : data) {
Map<Object, Object> mapData = new HashMap<Object, Object>();
for (Object col : row) {
mapData.put(col, col);
}
listMapData.add(mapData);
}
}
return listMapData;
}
}
/**
* html的table标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tableCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TABLE, keys, values, contentHTML);
}
/**
* html的table标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tableCreator(Object contentHTML) {
return tableCreator(null, null, contentHTML);
}
/**
* html的tr标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String trCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TR, keys, values, contentHTML);
}
/**
* html的tr标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String trCreator(Object contentHTML) {
return trCreator(null, null, contentHTML);
}
/**
* html的th标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String thCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TH, keys, values, contentHTML);
}
/**
* html的th标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String thCreator(Object contentHTML) {
return thCreator(null, null, contentHTML);
}
/**
* html的td标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tdCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(TD, keys, values, contentHTML);
}
/**
* html的td标记。
*
* @param contentHTML
* 子标记或内容
* @return
*/
public static String tdCreator(Object contentHTML) {
return tdCreator(null, null, contentHTML);
}
/**
* html的div标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String divCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(DIV, keys, values, contentHTML);
}
/**
* html的span标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String spanCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(SPAN, keys, values, contentHTML);
}
/**
* html的select标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String selectCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(SELECT, keys, values, contentHTML);
}
/**
* html的option标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String optionCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(OPTION, keys, values, contentHTML);
}
/**
* html的img标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @return
*/
public static String imgCreator(String[] keys, Object[] values) {
return htmlCreator(IMG, keys, values, "");
}
/**
* html的a标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @param contentHTML
* 子标记或内容
* @return
*/
public static String aCreator(String[] keys, Object[] values,
Object contentHTML) {
return htmlCreator(A, keys, values, contentHTML);
}
/**
* html的input标记。
*
* @param keys
* 标记属性名称列表
* @param values
* 标记属性值列表
* @return
*/
public static String inputCreator(String[] keys, Object[] values) {
return htmlCreator(INPUT, keys, values, "");
}
/**
* HTML标记前缀。
*/
public static final String htmlTagStart = "<";
/**
* HTML标签结束前缀。
*/
public static final String htmlTagEndStart = "</";
/**
* HTML标记后缀。
*/
public static final String htmlTagEnd = ">";
/**
* 英文状态下的双引号。
*/
public static final String quotesMarks = "\"";
/**
* 英文状态下的单引号
*/
public static final String singleQuoteMarks = "'";
}
分享到:
相关推荐
没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java....
提供从html中提取纯文本,从HTML中提取图片链接集合;使用于富文本编辑器存在数据库里面的网页处理
htmlunit 是java编写的对AJAX html(动态网页)进行渲染的有力工具,做互联网信息抓取项目时可能用到
java测试工具html转pdf
java常用工具类,时间换算,电话号码验证,过滤掉html标记,获取随机数
html转pdf工具类,可以直接将html转换成pdf
java将.docx文件和.doc文件转为html文件的工具类。。。
提供CSV文件解析、EXCEL文件解析、XML解析、JSON解析、HTML解析的相关功能。 phrase(词语包): 提供关键词过滤、汉语拼音解析的相关功能。 queue(队列包): 提供Kafka队列操作的相关功能。 other(其它)...
将java转成html文档的工具,方便阅读。
java过滤html,css,js标签工具类(UnHtmlScript),抓取页面内容去除标签样式信息
java读取html信息到后台,代码简洁易懂
java生成静态html代码 一个简单的实例 自己去扩展
用于解析html的java开源工具,很有用
Java工具包Hutool Wiki PDF版Java工具包Hutool Wiki PDF版
这个包里面包括了Java对数据和日期的处理,以及对图像处理、XML处理和HTML处理等工具类,另外还有其他一些有用类。
可以把Java源代码转换为Html来阅读的好东东。 关键字彩色显示。 Java2Html 能够的把java源代码转换为高亮有序的HTML, RTF, TeX 与 XHTML格式。这个开源项目有一个java applet 与许多插件以便能够与其它系统很好的给...
本人08年开始接触Java,初学者当然是使用黑框框编译啦,可是JDK编译器手动太麻烦,又要javac源文件,又要java主类名,还有Applet又要手动写html,包含自定义包文件又要重新输入包文件路径。 故特意编写此编译工具,只...
java发送邮件工具类,支持发送文本邮件,及html格式邮件
java工具类:支持后台html转成图片返回到前端,详细使用方法可进入我的博客查看:https://blog.csdn.net/qq_39380155/article/details/104833261
java 使用ITextRenderer将html模块生成pdf文件工具类,可直接下载测试。