`
liufei.fir
  • 浏览: 686222 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java html工具

 
阅读更多
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 如:&lt/tagName&gt
	 */
	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&ltMap&ltObject, Object&gt&gt数据转化为二维数组
		 * 
		 * @param data
		 *            List&ltMap&ltObject, Object&gt&gt数据
		 * @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&ltMap&ltObject, Object&gt&gt集合中。
		 * 
		 * @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”这个主题中,我们主要关注的是如何使用Java来实现HTML文档向PDF格式的转换。这涉及到对HTML的理解、PDF的生成原理以及Java中的相关库和框架。 首先,HTML(超文本标记语言)是网页设计...

    Java所有工具篇 Java所有工具篇 Java所有工具篇

    - **官方下载地址**:[Sun Java 网站](http://java.sun.com/j2se/downloads.html) - **最新版本**:J2SDK1.4.2,建议下载此版本。 - **安装步骤**: 1. 下载可执行安装程序。 2. 默认安装目录为 `C:\Program ...

    java html转pdf工具类

    这个“java html转pdf工具类”提供了一种便捷的方法来实现这个功能。以下是一些关于这个主题的重要知识点: 1. **iText和 Flying Saucer**: 这两个是Java中最常用的库,用于将HTML转换为PDF。iText是一个强大的PDF...

    【强2】30个java工具类

    没有CSDN积分的朋友到这里源头下载:http://www.javacs.cn/bbs/thread-382-1-1.html 感谢支持 [工具类] CookieCounter .java.txt [工具类] 验证码img .jsp.txt [工具类] Java中计算任意两个日期之间的工作天数 .java....

    html unit (java编写的html渲染工具)

    htmlunit 是java编写的对AJAX html(动态网页)进行渲染的有力工具,做互联网信息抓取项目时可能用到

    html java处理工具类

    提供从html中提取纯文本,从HTML中提取图片链接集合;使用于富文本编辑器存在数据库里面的网页处理

    java2html,将java转成html文档的工具

    Java2HTML是一个实用工具,它的主要功能是将Java源代码转换为HTML格式,这样可以更方便地在线查看和分享代码,同时保持代码的可读性和格式。这个工具对于开发者、教育工作者以及那些需要共享和展示Java代码的人员来...

    java代码生成html文件

    在IT行业中,Java是一种广泛应用的编程语言,尤其在构建Web应用程序方面。本示例将探讨如何使用Java生成HTML...总的来说,Java生成HTML文件的能力是构建动态网站、自动化报告或API文档等众多应用场景中的一个重要工具。

    Java常用工具类集合

    5. **HTML处理**:虽然Java标准库没有专门处理HTML的工具类,但可以借助第三方库,如Jsoup,它提供了一种方便的方式来解析、提取和修改HTML内容。 6. **其他有用类**:`java.util.concurrent`包提供了线程安全的...

    JAVA实现HTML文档读取

    在Java编程语言中,读取HTML文档主要涉及网络请求、HTML解析和DOM操作等技术。以下将详细讲解如何实现这一过程。 首先,我们需要获取HTML文档的内容。这通常通过HTTP请求来完成,Java提供了多种库来处理HTTP请求,...

    常见的十五种Java开发工具

    ### 常见的十五种Java开发工具 在软件开发领域,Java凭借其跨平台性、安全性以及丰富的类库支持,成为了最受欢迎的编程语言之一。本文将介绍十五种常用的Java开发工具及其简单的工作环境概述。 #### 1. JDK (Java ...

    java项目代码生成工具

    Java项目代码生成工具是一种高效的开发辅助工具,它利用模板引擎技术来自动化生成常见的Java代码,如控制器(Controller)、服务(Service)以及其实现类(ServiceImpl)。在这个特定的案例中,工具使用了FreeMarker...

    java常用工具类

    java常用工具类,时间换算,电话号码验证,过滤掉html标记,获取随机数

    Echarts-java资源工具类

    Echarts-java则是一个与Echarts结合的Java工具包,使得在Java环境中生成Echarts图表变得更加便捷。 在Java环境中,使用Echarts通常需要以下步骤: 1. **引入依赖**:`Echarts-Java3.0.jar`是Echarts的Java版本库,...

    java工具类:支持后台html转成图片返回到前端

    java工具类:支持后台html转成图片返回到前端,详细使用方法可进入我的博客查看:https://blog.csdn.net/qq_39380155/article/details/104833261

    snmp java agent工具

    Java SNMP Agent工具允许程序员创建能够响应SNMP请求的应用程序,从而与网络管理系统(NMS)进行交互。 1. **SNMP Java Agent**: Java SNMP Agent是用Java语言编写的SNMP协议实现,它使得开发者能够在Java平台上...

    java过滤html,css,js标签工具类(UnHtmlScript)

    在Java开发中,有时我们需要处理从网页抓取的数据,这些数据通常包含HTML、CSS和JavaScript标签,为了进一步处理和分析这些文本,我们需要将其净化,即去除这些格式化标签。`UnHtmlScript`工具类就是为了解决这个...

    java文件对比工具

    4. **JDiff**:专门针对Java源代码的比较工具,它可以生成人类可读的HTML格式的差异报告。 5. **IntelliJ IDEA / Eclipse**:这些集成开发环境(IDE)内置了文件和代码的比较工具,方便开发过程中的使用。 在压缩包...

    java将word转为html文件工具类

    java将.docx文件和.doc文件转为html文件的工具类。。。

    java反编译工具

    Java反编译工具是开发者用来查看Java字节码(.class文件)源代码的一种实用程序。这类工具能够将已经编译过的Java类文件转换回其原始的Java源代码形式,以便于理解、学习或者调试。在Java编程环境中,源代码通常被...

Global site tag (gtag.js) - Google Analytics