java常用工具类 XML工具类、数据验证工具类
本文实例为大家分享了java常用工具类的具体代码,供大家参考,具体内容如下
packagecom.jarvis.base.util;
importjava.io.File;
importjava.io.FileWriter;
importjava.io.IOException;
importjava.io.StringReader;
importjava.io.StringWriter;
importjava.net.URL;
importjava.util.Properties;
importjavax.xml.transform.OutputKeys;
importjavax.xml.transform.Result;
importjavax.xml.transform.Source;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.stream.StreamResult;
importjavax.xml.transform.stream.StreamSource;
importorg.dom4j.Document;
importorg.dom4j.Element;
importorg.dom4j.io.OutputFormat;
importorg.dom4j.io.SAXReader;
importorg.dom4j.io.XMLWriter;
/**
*
*
*@Title:XMLHelper.java
*@Packagecom.jarvis.base.util
*@Description:XML工具类
*@versionV1.0
*/
publicfinalclassXMLHelper{
/**
*把XML按照给定的XSL进行转换,返回转换后的值
*
*@paramxml
*xml
*@paramxsl
*xsl
*@return
*@throwsException
*/
publicstaticStringxml2xsl(Stringxml,URLxsl)throwsException{
if(StringHelper.isEmpty(xml)){
thrownewException("xmlstringisempty");
}
if(xsl==null){
thrownewException("xslstringisempty");
}
StringWriterwriter=newStringWriter();
SourcexmlSource=null;
SourcexslSource=null;
Resultresult=null;
try{
xmlSource=newStreamSource(newStringReader(xml));
xslSource=newStreamSource(xsl.openStream());
result=newStreamResult(writer);
TransformerFactorytransFact=TransformerFactory.newInstance();
Transformertrans=transFact.newTransformer(xslSource);
trans.transform(xmlSource,result);
returnwriter.toString();
}catch(Exceptionex){
thrownewException(ex);
}finally{
writer.close();
writer=null;
xmlSource=null;
xslSource=null;
result=null;
}
}
/**
*把XML按用户定义好的XSL样式进行输出
*
*@paramxmlFilePath
*XML文档
*@paramxsl
*XSL样式
*@return样式化后的字段串
*/
publicstaticStringxml2xsl(StringxmlFilePath,Stringxsl)throwsException{
if(StringHelper.isEmpty(xmlFilePath)){
thrownewException("xmlstringisempty");
}
if(StringHelper.isEmpty(xsl)){
thrownewException("xslstringisempty");
}
StringWriterwriter=newStringWriter();
SourcexmlSource=newStreamSource(newFile(xmlFilePath));
SourcexslSource=newStreamSource(newFile(xsl));
Resultresult=newStreamResult(writer);
try{
TransformerFactorytransFact=TransformerFactory.newInstance();
Transformertrans=transFact.newTransformer(xslSource);
Propertiesproperties=trans.getOutputProperties();
properties.setProperty(OutputKeys.ENCODING,"UTF-8");
properties.put(OutputKeys.METHOD,"html");
trans.setOutputProperties(properties);
trans.transform(xmlSource,result);
returnwriter.toString();
}finally{
writer.close();
writer=null;
xmlSource=null;
xslSource=null;
result=null;
}
}
/**
*读取XML文档,返回Document对象.
*
*@paramxmlFile
*XML文件路径
*@returnDocument对象
*/
publicstaticDocumentgetDocument(StringxmlFile)throwsException{
if(StringHelper.isEmpty(xmlFile)){
returnnull;
}
Filefile=null;
SAXReadersaxReader=newSAXReader();
file=newFile(xmlFile);
returnsaxReader.read(file);
}
/**
*读取XML文档,返回Document对象.
*
*@paramxmlFile
*file对象
*@returnDocument对象
*/
publicstaticDocumentgetDocument(FilexmlFile){
try{
SAXReadersaxReader=newSAXReader();
returnsaxReader.read(xmlFile);
}catch(Exceptionex){
ex.printStackTrace();
System.err.println("读取xml文件出错,返回null");
returnnull;
}
}
/**
*读取XML字串,返回Document对象
*
*@paramxmlString
*XML文件路径
*@returnDocument对象
*/
publicstaticDocumentgetDocumentFromString(StringxmlString){
if(StringHelper.isEmpty(xmlString)){
returnnull;
}
try{
SAXReadersaxReader=newSAXReader();
returnsaxReader.read(newStringReader(xmlString));
}catch(Exceptionex){
ex.printStackTrace();
System.err.println("读取xml文件出错,返回null");
returnnull;
}
}
/**
*描述:把xml输出成为html作者:时间:Oct29,20084:57:56PM
*
*@paramxmlDoc
*xmlDoc
*@paramxslFile
*xslFile
*@paramencoding
*编码
*@return
*@throwsException
*/
publicstaticStringxml2html(StringxmlDoc,StringxslFile,Stringencoding)throwsException{
if(StringHelper.isEmpty(xmlDoc)){
thrownewException("xmlstringisempty");
}
if(StringHelper.isEmpty(xslFile)){
thrownewException("xsltfileisempty");
}
StringWriterwriter=newStringWriter();
SourcexmlSource=null;
SourcexslSource=null;
Resultresult=null;
Stringhtml=null;
try{
xmlSource=newStreamSource(newStringReader(xmlDoc));
xslSource=newStreamSource(newFile(xslFile));
result=newStreamResult(writer);
TransformerFactorytransFact=TransformerFactory.newInstance();
Transformertrans=transFact.newTransformer(xslSource);
Propertiesproperties=trans.getOutputProperties();
properties.put(OutputKeys.METHOD,"html");
properties.setProperty(OutputKeys.ENCODING,encoding);
trans.setOutputProperties(properties);
trans.transform(xmlSource,result);
html=writer.toString();
writer.close();
returnhtml;
}catch(Exceptionex){
thrownewException(ex);
}finally{
writer=null;
xmlSource=null;
xslSource=null;
result=null;
}
}
/**
*描述:把xml输出成为html
*
*@paramxmlFile
*xmlFile
*@paramxslFile
*xslFile
*@paramencoding
*编码
*@return
*@throwsException
*/
publicstaticStringxmlFile2html(StringxmlFile,StringxslFile,Stringencoding)throwsException{
if(StringHelper.isEmpty(xmlFile)){
thrownewException("xmlstringisempty");
}
if(StringHelper.isEmpty(xslFile)){
thrownewException("xsltfileisempty");
}
StringWriterwriter=newStringWriter();
SourcexmlSource=null;
SourcexslSource=null;
Resultresult=null;
Stringhtml=null;
try{
xmlSource=newStreamSource(newFile(xmlFile));
xslSource=newStreamSource(newFile(xslFile));
result=newStreamResult(writer);
TransformerFactorytransFact=TransformerFactory.newInstance();
Transformertrans=transFact.newTransformer(xslSource);
Propertiesproperties=trans.getOutputProperties();
properties.put(OutputKeys.METHOD,"html");
properties.setProperty(OutputKeys.ENCODING,encoding);
trans.setOutputProperties(properties);
trans.transform(xmlSource,result);
html=writer.toString();
writer.close();
returnhtml;
}catch(Exceptionex){
thrownewException(ex);
}finally{
writer=null;
xmlSource=null;
xslSource=null;
result=null;
}
}
/**
*描述:
*
*@paramname
*名
*@paramelement
*元素
*@return
*/
publicstaticStringgetString(Stringname,Elementelement){
return(element.valueOf(name)==null)?"":element.valueOf(name);
}
/**
*将一个XML文档保存至文件中.
*
*@paramdoc
*要保存的XML文档对象.
*@paramfilePath
*要保存到的文档路径.
*@paramformat
*要保存的输出格式
*@returntrue代表保存成功,否则代表不成功.
*/
publicstaticbooleansavaToFile(Documentdoc,StringfilePathName,OutputFormatformat){
XMLWriterwriter;
try{
StringfilePath=FileHelper.getFullPath(filePathName);
//若目录不存在,则建立目录
if(!FileHelper.exists(filePath)){
if(!FileHelper.createDirectory(filePath)){
returnfalse;
}
}
writer=newXMLWriter(newFileWriter(newFile(filePathName)),format);
writer.write(doc);
writer.close();
returntrue;
}catch(IOExceptionex){
ex.printStackTrace();
System.err.println("写文件出错");
}
returnfalse;
}
/**
*将一个XML文档保存至文件中.
*
*@paramfilePath
*要保存到的文档路径.
*@paramdoc
*要保存的XML文档对象.
*@returntrue代表保存成功,否则代表不成功.
*/
publicstaticbooleanwriteToXml(StringfilePathName,Documentdoc){
OutputFormatformat=OutputFormat.createCompactFormat();
format.setEncoding("UTF-8");
returnsavaToFile(doc,filePathName,format);
}
}
数据验证工具类
packagecom.jarvis.base.util;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
/**
*说明:常用的数据验证工具类。
*
*/
publicclassValidateUtil{
publicstaticfinalPatternCODE_PATTERN=Pattern.compile("^0\\d{2,4}$");
publicstaticfinalPatternPOSTCODE_PATTERN=Pattern.compile("^\\d{6}$");
publicstaticfinalPatternBANK_CARD_PATTERN=Pattern.compile("^\\d{16,30}$");
/**
*匹配图象
*
*
*格式:/相对路径/文件名.后缀(后缀为gif,dmp,png)
*
*匹配:/forum/head_icon/admini2005111_ff.gif或admini2005111.dmp
*
*
*不匹配:c:/admins4512.gif
*
*/
publicstaticfinalStringICON_REGEXP="^(/{0,1}//w){1,}//.(gif|dmp|png|jpg)$|^//w{1,}//.(gif|dmp|png|jpg)$";
/**
*匹配email地址
*
*
*格式:XXX@XXX.XXX.XX
*
*匹配:foo@bar.com或foobar@foobar.com.au
*
*不匹配:foo@bar或$$$@bar.com
*
*/
publicstaticfinalStringEMAIL_REGEXP="(?://w[-._//w]*//w@//w[-._//w]*//w//.//w{2,3}$)";
/**
*匹配并提取url
*
*
*格式:XXXX://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX
*
*匹配:http://www.suncer.com或news://www
*
*不匹配:c:/window
*
*/
publicstaticfinalStringURL_REGEXP="(//w+)://([^/:]+)(://d*)?([^#//s]*)";
/**
*匹配并提取http
*
*格式:http://XXX.XXX.XXX.XX/XXX.XXX?XXX=XXX或ftp://XXX.XXX.XXX或
*https://XXX
*
*匹配:http://www.suncer.com:8080/index.html?login=true
*
*不匹配:news://www
*
*/
publicstaticfinalStringHTTP_REGEXP="(http|https|ftp)://([^/:]+)(://d*)?([^#//s]*)";
/**
*匹配日期
*
*
*格式(首位不为0):XXXX-XX-XX或XXXX-X-X
*
*
*范围:1900--2099
*
*
*匹配:2005-04-04
*
*
*不匹配:01-01-01
*
*/
publicstaticfinalStringDATE_BARS_REGEXP="^((((19){1}|(20){1})\\d{2})|\\d{2})-[0,1]?\\d{1}-[0-3]?\\d{1}$";
/**
*匹配日期
*
*
*格式:XXXX/XX/XX
*
*
*范围:
*
*
*匹配:2005/04/04
*
*
*不匹配:01/01/01
*
*/
publicstaticfinalStringDATE_SLASH_REGEXP="^[0-9]{4}/(((0[13578]|(10|12))/(0[1-9]|[1-2][0-9]|3[0-1]))|(02-(0[1-9]|[1-2][0-9]))|((0[469]|11)/(0[1-9]|[1-2][0-9]|30)))$";
/**
*匹配电话
*
*
*格式为:0XXX-XXXXXX(10-13位首位必须为0)或0XXXXXXXXXX(10-13位首位必须为0)或
*
*(0XXX)XXXXXXXX(11-14位首位必须为0)或XXXXXXXX(6-8位首位不为0)或
*XXXXXXXXXXX(11位首位不为0)
*
*
*匹配:0371-123456或(0371)1234567或(0371)12345678或010-123456或
*010-12345678或12345678912
*
*
*不匹配:1111-134355或0123456789
*
*/
publicstaticfinalStringPHONE_REGEXP="^(?:0[0-9]{2,3}[-//s]{1}|//(0[0-9]{2,4}//))[0-9]{6,8}$|^[1-9]{1}[0-9]{5,7}$|^[1-9]{1}[0-9]{10}$";
/**
*匹配身份证
*
*格式为:XXXXXXXXXX(10位)或XXXXXXXXXXXXX(13位)或XXXXXXXXXXXXXXX(15位)或
*XXXXXXXXXXXXXXXXXX(18位)
*
*匹配:0123456789123
*
*不匹配:0123456
*
*/
publicstaticfinalStringID_CARD_REGEXP="^//d{10}|//d{13}|//d{15}|//d{18}$";
/**
*匹配邮编代码
*
*格式为:XXXXXX(6位)
*
*匹配:012345
*
*不匹配:0123456
*
*/
publicstaticfinalStringZIP_REGEXP="^[0-9]{6}$";//匹配邮编代码
/**
*不包括特殊字符的匹配(字符串中不包括符号数学次方号^单引号'双引号"分号;逗号,帽号:数学减号-右尖括号>左尖括号<反斜杠/
*即空格,制表符,回车符等)
*
*格式为:x或一个一上的字符
*
*匹配:012345
*
*不匹配:0123456//;,:-<>//s].+$";//
*/
publicstaticfinalStringNON_SPECIAL_CHAR_REGEXP="^[^'/";
//匹配邮编代码
/**
*匹配非负整数(正整数+0)
*/
publicstaticfinalStringNON_NEGATIVE_INTEGERS_REGEXP="^//d+$";
/**
*匹配不包括零的非负整数(正整数>0)
*/
publicstaticfinalStringNON_ZERO_NEGATIVE_INTEGERS_REGEXP="^[1-9]+//d*$";
/**
*
*匹配正整数
*
*/
publicstaticfinalStringPOSITIVE_INTEGER_REGEXP="^[0-9]*[1-9][0-9]*$";
/**
*
*匹配非正整数(负整数+0)
*
*/
publicstaticfinalStringNON_POSITIVE_INTEGERS_REGEXP="^((-//d+)|(0+))$";
/**
*
*匹配负整数
*
*/
publicstaticfinalStringNEGATIVE_INTEGERS_REGEXP="^-[0-9]*[1-9][0-9]*$";
/**
*
*匹配整数
*
*/
publicstaticfinalStringINTEGER_REGEXP="^-?//d+$";
/**
*
*匹配非负浮点数(正浮点数+0)
*
*/
publicstaticfinalStringNON_NEGATIVE_RATIONAL_NUMBERS_REGEXP="^//d+(//.//d+)?$";
/**
*
*匹配正浮点数
*
*/
publicstaticfinalStringPOSITIVE_RATIONAL_NUMBERS_REGEXP="^(([0-9]+//.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*//.[0-9]+)|([0-9]*[1-9][0-9]*))$";
/**
*
*匹配非正浮点数(负浮点数+0)
*
*/
publicstaticfinalStringNON_POSITIVE_RATIONAL_NUMBERS_REGEXP="^((-//d+(//.//d+)?)|(0+(//.0+)?))$";
/**
*
*匹配负浮点数
*
*/
publicstaticfinalStringNEGATIVE_RATIONAL_NUMBERS_REGEXP="^(-(([0-9]+//.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*//.[0-9]+)|([0-9]*[1-9][0-9]*)))$";
/**
*
*匹配浮点数
*
*/
publicstaticfinalStringRATIONAL_NUMBERS_REGEXP="^(-?//d+)(//.//d+)?$";
/**
*
*匹配由26个英文字母组成的字符串
*
*/
publicstaticfinalStringLETTER_REGEXP="^[A-Za-z]+$";
/**
*
*匹配由26个英文字母的大写组成的字符串
*
*/
publicstaticfinalStringUPWARD_LETTER_REGEXP="^[A-Z]+$";
/**
*
*匹配由26个英文字母的小写组成的字符串
*
*/
publicstaticfinalStringLOWER_LETTER_REGEXP="^[a-z]+$";
/**
*
*匹配由数字和26个英文字母组成的字符串
*
*/
publicstaticfinalStringLETTER_NUMBER_REGEXP="^[A-Za-z0-9]+$";
/**
*
*匹配由数字、26个英文字母或者下划线组成的字符串
*
*/
publicstaticfinalStringLETTER_NUMBER_UNDERLINE_REGEXP="^//w+$";
publicstaticbooleanvalidateEmail(Stringstr){
if(str==null||str.trim().length()==0){
returnfalse;
}
Patternpattern=Pattern.compile(
"^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$");
//Patternpattern=
//Pattern.compile("^([a-zA-Z0-9_-])+@(([a-zA-z0-9]-*){1,}\\.){1,3}[a-zA-z\\-]{1,}");
Matchermatcher=pattern.matcher(str);
returnmatcher.matches();
}
publicstaticbooleanvalidateMoblie(Stringstr){
if(str==null||str.trim().length()==0){
returnfalse;
}
Patternpattern=Pattern.compile("^(13|14|15|17|18)[0-9]{9}$");
Matchermatcher=pattern.matcher(str);
returnmatcher.matches();
}
/**
*验证区号是否有效.
*
*@paramcode要验证的区号
*@return是否正确身份证
*/
publicstaticbooleanvalidateCode(Stringcode){
if(StringHelper.isEmpty(code)){
returnfalse;
}
Matcherm=CODE_PATTERN.matcher(code);
returnm.matches();
}
/**
*验证邮政编码是否有效.
*
*@parampostcode要验证的邮政编码
*@return是否正确邮政编码
*/
publicstaticbooleanvalidatePostcode(Stringpostcode){
if(StringHelper.isEmpty(postcode)){
returnfalse;
}
Matcherm=POSTCODE_PATTERN.matcher(postcode);
returnm.matches();
}
/**
*验证银行卡是否有效.
*
*@parambankCardNumber要验证的银行卡号
*@return是否正确银行卡号
*/
publicstaticbooleanvalidateBankCardNumber(StringbankCardNumber){
if(StringHelper.isEmpty(bankCardNumber)){
returnfalse;
}
Matcherm=BANK_CARD_PATTERN.matcher(bankCardNumber);
returnm.matches();
}
/**
*通过身份证获取生日
*
*@paramidNumber身份证号
*@return返回生日,格式为yyyy-MM-dd的字符串
*/
publicstaticStringgetBirthdayByIdNumber(StringidNumber){
Stringbirthday="";
if(idNumber.length()==15){
birthday="19"+idNumber.substring(6,8)+"-"+idNumber.substring(8,10)+"-"+idNumber.substring(10,12);
}elseif(idNumber.length()==18){
birthday=idNumber.substring(6,10)+"-"+idNumber.substring(10,12)+"-"+idNumber.substring(12,14);
}
returnbirthday;
}
/**
*通过身份证获取性别
*
*@paramidNumber身份证号
*@return返回性别,0保密,1男2女
*/
publicstaticIntegergetGenderByIdNumber(StringidNumber){
intgender=0;
if(idNumber.length()==15){
gender=Integer.parseInt(String.valueOf(idNumber.charAt(14)))%2==0?2:1;
}elseif(idNumber.length()==18){
gender=Integer.parseInt(String.valueOf(idNumber.charAt(16)))%2==0?2:1;
}
returngender;
}
/**
*通过身份证获取年龄
*
*@paramidNumber身份证号
*@paramisNominalAge是否按元旦算年龄,过了1月1日加一岁true:是false:否
*@return返回年龄
*/
publicstaticIntegergetAgeByIdNumber(StringidNumber,booleanisNominalAge){
StringbirthString=getBirthdayByIdNumber(idNumber);
if(StringHelper.isEmpty(birthString)){
return0;
}
returngetAgeByBirthString(birthString,isNominalAge);
}
/**
*通过生日日期获取年龄
*
*@parambirthDate生日日期
*@return返回年龄
*/
publicstaticIntegergetAgeByBirthDate(DatebirthDate){
returngetAgeByBirthString(newSimpleDateFormat("yyyy-MM-dd").format(birthDate));
}
/**
*通过生日字符串获取年龄
*
*@parambirthString生日字符串
*@return返回年龄
*/
publicstaticIntegergetAgeByBirthString(StringbirthString){
returngetAgeByBirthString(birthString,"yyyy-MM-dd");
}
/**
*通过生日字符串获取年龄
*
*@parambirthString生日字符串
*@paramisNominalAge是否按元旦算年龄,过了1月1日加一岁true:是false:否
*@return返回年龄
*/
publicstaticIntegergetAgeByBirthString(StringbirthString,booleanisNominalAge){
returngetAgeByBirthString(birthString,"yyyy-MM-dd",isNominalAge);
}
/**
*通过生日字符串获取年龄
*
*@parambirthString生日字符串
*@paramformat日期字符串格式,为空则默认"yyyy-MM-dd"
*@return返回年龄
*/
publicstaticIntegergetAgeByBirthString(StringbirthString,Stringformat){
returngetAgeByBirthString(birthString,"yyyy-MM-dd",false);
}
/**
*通过生日字符串获取年龄
*
*@parambirthString生日字符串
*@paramformat日期字符串格式,为空则默认"yyyy-MM-dd"
*@paramisNominalAge是否按元旦算年龄,过了1月1日加一岁true:是false:否
*@return返回年龄
*/
publicstaticIntegergetAgeByBirthString(StringbirthString,Stringformat,booleanisNominalAge){
intage=0;
if(StringHelper.isEmpty(birthString)){
returnage;
}
if(StringHelper.isEmpty(format)){
format="yyyy-MM-dd";
}
try{
Calendarbirthday=Calendar.getInstance();
Calendartoday=Calendar.getInstance();
SimpleDateFormatsdf=newSimpleDateFormat(format);
birthday.setTime(sdf.parse(birthString));
age=today.get(Calendar.YEAR)-birthday.get(Calendar.YEAR);
if(!isNominalAge){
if(today.get(Calendar.MONTH)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。