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 = "'";
}
分享到:
相关推荐
在“java测试工具html转pdf”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...
- **官方下载地址**:[Sun Java 网站](http://java.sun.com/j2se/downloads.html) - **最新版本**:J2SDK1.4.2,建议下载此版本。 - **安装步骤**: 1. 下载可执行安装程序。 2. 默认安装目录为 `C:\Program ...
这个“java html转pdf工具类”提供了一种便捷的方法来实现这个功能。以下是一些关于这个主题的重要知识点: 1. **iText和 Flying Saucer**: 这两个是Java中最常用的库,用于将HTML转换为PDF。iText是一个强大的PDF...
没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java....
htmlunit 是java编写的对AJAX html(动态网页)进行渲染的有力工具,做互联网信息抓取项目时可能用到
提供从html中提取纯文本,从HTML中提取图片链接集合;使用于富文本编辑器存在数据库里面的网页处理
Java2HTML是一个实用工具,它的主要功能是将Java源代码转换为HTML格式,这样可以更方便地在线查看和分享代码,同时保持代码的可读性和格式。这个工具对于开发者、教育工作者以及那些需要共享和展示Java代码的人员来...
在IT行业中,Java是一种广泛应用的编程语言,尤其在构建Web应用程序方面。本示例将探讨如何使用Java生成HTML...总的来说,Java生成HTML文件的能力是构建动态网站、自动化报告或API文档等众多应用场景中的一个重要工具。
在Java编程语言中,读取HTML文档主要涉及网络请求、HTML解析和DOM操作等技术。以下将详细讲解如何实现这一过程。 首先,我们需要获取HTML文档的内容。这通常通过HTTP请求来完成,Java提供了多种库来处理HTTP请求,...
5. **HTML处理**:虽然Java标准库没有专门处理HTML的工具类,但可以借助第三方库,如Jsoup,它提供了一种方便的方式来解析、提取和修改HTML内容。 6. **其他有用类**:`java.util.concurrent`包提供了线程安全的...
### 常见的十五种Java开发工具 在软件开发领域,Java凭借其跨平台性、安全性以及丰富的类库支持,成为了最受欢迎的编程语言之一。本文将介绍十五种常用的Java开发工具及其简单的工作环境概述。 #### 1. JDK (Java ...
Java项目代码生成工具是一种高效的开发辅助工具,它利用模板引擎技术来自动化生成常见的Java代码,如控制器(Controller)、服务(Service)以及其实现类(ServiceImpl)。在这个特定的案例中,工具使用了FreeMarker...
java常用工具类,时间换算,电话号码验证,过滤掉html标记,获取随机数
Echarts-java则是一个与Echarts结合的Java工具包,使得在Java环境中生成Echarts图表变得更加便捷。 在Java环境中,使用Echarts通常需要以下步骤: 1. **引入依赖**:`Echarts-Java3.0.jar`是Echarts的Java版本库,...
java工具类:支持后台html转成图片返回到前端,详细使用方法可进入我的博客查看:https://blog.csdn.net/qq_39380155/article/details/104833261
Java SNMP Agent工具允许程序员创建能够响应SNMP请求的应用程序,从而与网络管理系统(NMS)进行交互。 1. **SNMP Java Agent**: Java SNMP Agent是用Java语言编写的SNMP协议实现,它使得开发者能够在Java平台上...
在Java开发中,有时我们需要处理从网页抓取的数据,这些数据通常包含HTML、CSS和JavaScript标签,为了进一步处理和分析这些文本,我们需要将其净化,即去除这些格式化标签。`UnHtmlScript`工具类就是为了解决这个...
4. **JDiff**:专门针对Java源代码的比较工具,它可以生成人类可读的HTML格式的差异报告。 5. **IntelliJ IDEA / Eclipse**:这些集成开发环境(IDE)内置了文件和代码的比较工具,方便开发过程中的使用。 在压缩包...
java将.docx文件和.doc文件转为html文件的工具类。。。
Java反编译工具是开发者用来查看Java字节码(.class文件)源代码的一种实用程序。这类工具能够将已经编译过的Java类文件转换回其原始的Java源代码形式,以便于理解、学习或者调试。在Java编程环境中,源代码通常被...