分享⼀个java拼接html的⼯具类package com.zhou.util;
import java.util.*;
import Pattern;
/**
* ⽣成html
* @author lang.zhou
* @date  2019-02-01
* @version v2.0 append(Tag)⽀持动态修改Tag属性
*/
public class Tag2 implements Cloneable{
public static final String SINGLE_DOLT="'";
public static final String DOUBLE_DOLT="\"";
public static final String SPACE=" ";
public static final String BR="<br>";
/*** 定义HTML标签的正则表达式*/
public static final String REGEX_HTML = "<[^>]+>";
public static Pattern htmlPattern = null;
/*** false代表有标签体*/
private boolean single=false;
/*** style标签使⽤的引号*/
private String styleDolt;
/*** 标签名称*/
private String name;
/*** 标签属性*/
private Map<String,Two> attributes;
/*** 标签css*/
private Map<String,String> css;
/*** 标签之前的元素*/
private List<Object> beforeElements;
/*** 标签体内的元素*/
private List<Object> body;
/*** 标签后⾯的元素*/
private List<Object> afterElements;
public Tag2(String name){
this.name=name;
}
public Tag2(String name, boolean single){
this.name=name;
this.single=single;
}
public void setName(String name){
this.name=name;
}
/**
* 添加⼀个属性,添加style属性时,和css()不冲突
* @param name 属性名
* @param value 属性值,默认使⽤双引号
*/
public Tag2 attr(String name, String value){
return attr(name,value,DOUBLE_DOLT);
}
/**
* 获得⼀个属性的值
* @param name 属性名
*/
public String attr(String name){
if(this.attributes != null){
Two two=(name);
return two != null ? two.value : null;
return two != null ? two.value : null;
}
return null;
}
/**
* @param dolt 有效的值为单引号或双引号,表⽰这个属性值⽤哪个引号包裹,如href=""或href=''    */
public Tag2 attr(String name, String value, String dolt){
if(attributes==null){
attributes=new HashMap<>();
}
Two t=new Two(value,dolt);
attributes.put(name,t);
return this;
}
/**
* 添加⼀个css属性,和attr("style","xxx")不冲突
* @param name 属性名
* @param value 属性值
*/
public Tag2 css(String name, String value){
if(css==null){
css=new HashMap<>();
}
css.put(name,value);
return this;
}
public Tag2 clazz(String className){
return attr("class",className);
}
private Tag2 addBody(Object o, int index){
if(!single){
if(body==null){
body=new ArrayList<>();
}
if(index==-1){
body.add(o);
}else{
body.add(index,o);
}
}
return this;
}
/**
* 在标签体内(末尾)追加⼀个元素,和jquery的append⼀样
* @param o Tag对象或者字符串
*/
public Tag2 append(Object o){
return addBody(o,-1);
}
public Tag2 appendBr(){
return addBody(Tag2.BR,-1);
}
/**
* 在标签体内(开头)追加⼀个元素,和jquery的prepend⼀样
* @param o Tag对象或者字符串
*/
public Tag2 prepend(Object o){
return addBody(o,0);
}
/**
* 在标签后⾯追加⼀个元素,和jquery的after⼀样
* @param o Tag对象或者字符串
*/
public Tag2 after(Object o){
public Tag2 after(Object o){
if(afterElements==null){
afterElements=new ArrayList<>();
}
afterElements.add(o);
return this;
}
/**
* 在标签前⾯追加⼀个元素,和jquery的before⼀样
* @param o Tag对象或者字符串
*/
public Tag2 before(Object o){
if(beforeElements==null){
beforeElements=new ArrayList<>();
}
beforeElements.add(o);
return this;
jquery在一个元素后追加标签
}
public boolean is(String name){
return this.name != null && Objects.equals(this.name,name);
}
/**
* 将标签转换为字符串
* @return 标签的字符串
*/
public String html(){
if(name == null || "".equals(name)){
return null;
}
StringBuilder s=new StringBuilder();
if(beforeElements!=null && beforeElements.size()>0){
for(Object e : beforeElements){
s.append(e);
}
}
s.append("<").append(name);
String[] styles;
if(attributes!=null && !attributes.isEmpty()){
Two ("style");
if(t!=null){
styles=t.value.split(";");
styleDolt=t.dolt;
if(styles.length>0){
if(css==null){
css=new HashMap<>();
}
for (String style : styles) {
if (ains(":") && style.split(":").length > 1) {
css.put(style.split(":")[0], style.split(":")[1]);
}
}
}
}
for (Map.Entry<String, Two> entry : Set()) {
if (!"style".Key())) {
String value = Value().value;
if (value != null && !"".equals(value)) {
s.append(" ").Key()).append("=").Value().dolt)                                .append(value).Value().dolt);
}
}
}
}
if(css!=null && !css.isEmpty()){
boolean haveStyle=false;
for(String v : css.values()){
for(String v : css.values()){
if(v!=null && !"".equals(v)){
haveStyle=true;
break;
}
}
if(haveStyle){
if(styleDolt==null){
styleDolt=DOUBLE_DOLT;
}
s.append(" ".Value())){
s.Key()).append(":").Value()).append(";");                    }
}
s.append(styleDolt);
}
}
if(!single){
s.append(">");
if(body!=null && body.size()>0){
for(Object e : body){
s.append(e);
}
}
s.append("</").append(name).append(">");
}else{
s.append("/>");
}
if(afterElements!=null && afterElements.size()>0){
for(Object e : afterElements){
s.append(e);
}
}
String();
}
public Tag2 width(String wid){
return css("width",wid);
}
public Tag2 height(String hi){
return css("height",hi);
}
public Tag2 onClick(String func){
return onClick(func,DOUBLE_DOLT);
}
public Tag2 onClick(String func, String dolt){
return attr("onclick",func,dolt);
}
public Tag2 onChange(String func){
return onChange(func,DOUBLE_DOLT);
}
public Tag2 onChange(String func, String dolt){
return attr("onchange",func,dolt);
}
public Tag2 onInput(String func){
return onInput(func,DOUBLE_DOLT);
}
public Tag2 onInput(String func, String dolt){
return attr("oninput",func,dolt);
}
public Tag2 val(String value){
return val(value,DOUBLE_DOLT);
}
public Tag2 val(String value, String dolt){
return attr("value",value,dolt);
}
public Tag2 href(String href){
return href(href,DOUBLE_DOLT);
}
public Tag2 href(String href, String dolt){
if(this.is("a")){
return attr("href",href,dolt);
}
return this;
}
public Tag2 cancleHref(){
if(this.is("a")){
return href("javascript:void(0);");
}
return this;
}
public Tag2 src(String src){
return src(src,DOUBLE_DOLT);
}
public Tag2 src(String src, String dolt){
return attr("src",src,dolt);
}
public Tag2 title(String title){
return title(title,DOUBLE_DOLT);
}
public Tag2 title(String title, String dolt){
return attr("title",title,dolt);
}
public Tag2 style(String style){
return style(style,DOUBLE_DOLT);
}
public Tag2 style(String style, String dolt){
return attr("style",style,dolt);
}
public Tag2 id(String id){
return attr("id",id);
}
public Tag2 name(String name){
return attr("name",name);
}
public Tag2 text(String text){
if(body!=null){
body.clear();
}
return append(text);
}
public String text(){
if(body!=null){
return this.html().replaceAll(REGEX_HTML,"");        }
return null;
}
public void empty(){
if(this.body!= null){
this.body.clear();
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。