java xmlxslhtml文件转换.docx
- 文档编号:24517632
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:11
- 大小:34.03KB
java xmlxslhtml文件转换.docx
《java xmlxslhtml文件转换.docx》由会员分享,可在线阅读,更多相关《java xmlxslhtml文件转换.docx(11页珍藏版)》请在冰豆网上搜索。
javaxmlxslhtml文件转换
javaxml,xsl,html文件转换
java文件代码:
packagecom.test;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.File;
importjava.io.InputStream;
importjava.io.PrintWriter;
importjava.io.StringWriter;
importjavax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.transform.Result;
importjavax.xml.transform.Source;
importjavax.xml.transform.Transformer;
importjavax.xml.transform.TransformerFactory;
importjavax.xml.transform.dom.DOMSource;
importjavax.xml.transform.stream.StreamResult;
importjavax.xml.transform.stream.StreamSource;
importorg.w3c.dom.Document;
importorg.xml.sax.InputSource;
/**
*测试xmlxslhtml的应用
*@authorxrxianga
*@date20120926
*/
publicclassxmlVSxslTest{
/**
*测试
*@paramargs
*@throwsException
*/
publicstaticvoidmain(String[]args)throwsException{
StringxmlFile="src/com/test/xml.xml";
StringxslFile="src/com/test/xsl.xsl";
StringhtmlFileName="d:
/html.html";
StringxmlFileName="com/test/test0332xsl.xml";
StringxslFileName="com/test/input0332.xsl";
//测试把xml文件转换为html文件
xmlVSxslTest.Transform(xmlFile,xslFile,htmlFileName);
//测试把xml文件通过xsl模板转换需要的xml格式文件
Stringstr=parseXmlResource(xmlFileName,"utf-8");
Stringsrc=returnXml(str,xslFileName,"utf-8");
System.out.println(src);
}
/**
*把xml文件转换为html文件
*@paramxmlFileName转换的文件,xml文件路径
*@paramxslFileName转换的模板,xsl文件路径
*@paramhtmlFileName保存文件路径以及文件
*@throwsException
*/
publicstaticvoidTransform(StringxmlFileName,StringxslFileName,StringhtmlFileName)throwsException{
TransformerFactorytFac=TransformerFactory.newInstance();
SourcexslSource=newStreamSource(xslFileName);
Transformert=tFac.newTransformer(xslSource);
FilexmlFile=newFile(xmlFileName);
FilehtmlFile=newFile(htmlFileName);
Sourcesource=newStreamSource(xmlFile);
Resultresult=newStreamResult(htmlFile);
t.transform(source,result);
}
/**
*检查xml文件
*@paramresourcexml检查的路径
*@paramencoding字符编码
*@returnString返回需要的xml字符串
*@throwsException
*/
publicstaticStringparseXmlResource(Stringresource,Stringencoding)throwsException{
//在指定类中的加载器中得到输入流中读取指定资源
InputStreaminputStream=xmlVSxslTest.class.getClassLoader().getResourceAsStream(resource);
//得到一个新的输入源的字节流
InputSourceinputSource=newInputSource(inputStream);
//设置字符编码
inputSource.setEncoding(encoding);
//定义工厂API,使应用程序获得从XML文件生成DOM对象树的解析器。
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
//创建一个新实例的文档生成器使用当前配置的参数。
DocumentBuilderbuilder=factory.newDocumentBuilder();
//在给定的输入源的内容解析为一个XML文档并返回一个新的DOM文件对象
Documentdocument=builder.parse(inputSource);
//获得一个TransformerFactory的新实例
TransformerFactorytf=TransformerFactory.newInstance();
//创建一个新的变压器,执行复制的源代码的结果
Transformert=tf.newTransformer();
//设置输出编码
t.setOutputProperty("encoding",encoding);
//创建一个新的字节数组输出流
ByteArrayOutputStreambos=newByteArrayOutputStream();
//关键代码 document.getDocumentElement()是为了不给生成的xml增加头部声明
//创建一个新的DOM节点的输入源
//文档元素的子节点的属性
//从字节流,构建一个StreamResult
t.transform(newDOMSource(document.getDocumentElement()),newStreamResult(bos));
//将缓冲区的内容转换为字符串,根据指定的字符编码将字节转换成字符
Stringxml=bos.toString(encoding);
returnxml;
}
/**
*转换文件(xml通过xsl转换)
*@paramxml转换文件
*@paramxsl转换模板
*@paramencoding字符编码
*@returnString返回转换后的xml字符串
*@throwsException
*/
publicstaticStringreturnXml(Stringxml,Stringxsl,Stringencoding)throwsException{
//获取字符串输入流
StringWriterstringWriter=newStringWriter();
//获取打印输出流,并设置输出为字符流形式
PrintWriterprintWriter=newPrintWriter(stringWriter);
//根据输入的String,获取XML字符串是输入源
SourcesrcSource=newStreamSource(newByteArrayInputStream(xml.getBytes(encoding)));
//设置转换结果输出为打印流
ResultdestResult=newStreamResult(printWriter);
//获取转换模板
ClassLoadercl=xmlVSxslTest.class.getClassLoader();
InputStreamis=cl.getResourceAsStream(xsl);
SourcexslSource=newStreamSource(is);
//创建转换工厂
TransformerFactorytransFact=TransformerFactory.newInstance();
//创建转换对象
Transformertrans=transFact.newTransformer(xslSource);
//实行转换
trans.transform(srcSource,destResult);
//把转换结果赋值到返回的字符串中
StringxmlParsed=stringWriter.toString();
//关闭打印流
printWriter.close();
returnxmlParsed;
}
}
input0332.xsl文件内容:
xmlversion="1.0"encoding="UTF-8"?
>
stylesheetversion="1.0"xmlns: xsl="http: //www.w3.org/1999/XSL/Transform"> outputmethod="xml"version="1.0"encoding="UTF-8"indent="yes"cdata-section-elements="DataContent" /> templatematch="/"> apply-templates/> template> templatematch="cstmRoot"> for-eachselect="base"> elementname="BASE"> elementname="row"> attributename="C_APP_CDE"> value-ofselect=".//appCode"/> attribute> attributename="C_APP_NME"> value-ofselect=".//appName"/> attribute> attributename="C_INSRNT_CDE"> value-ofselect=".//appCode"/> attribute> attributename="C_INSRNT_CNM"> value-ofselect=".//appName"/> attribute> attributename="T_SIGN_TM"> value-ofselect=".//signTime"/> attribute> attributename="T_INSRNC_BGN_TM"> value-ofselect=".//beginTime"/> attribute> attributename="C_DPT_CDE"> value-ofselect=".//deptCode"/> attribute> attributename="C_SLS_CDE"> value-ofselect="/cstmRoot/user/userID"/> attribute> element> element> for-each> for-eachselect="vhl"> elementname="VHL"> elementname="row"> attributename="C_LCN_NO"> value-ofselect=".//license"/> attribute> attributename="C_YL3"> value-ofselect=".//plateType"/> attribute> attributename="C_VHL_TYP"> value-ofselect=".//vhlType"/> attribute> attributename="C_USE_ATR"> value-ofselect=".//useAttr"/> attribute> attributename="C_FST_REG_DTE"> value-ofselect=".//regDate"/> attribute> attributename="C_VHL_FRM"> value-ofselect=".//vhlFrame"/> attribute> attributename="C_ENG_NO"> value-ofselect=".//engineNo"/> attribute> attributename="C_CLASS_DTL"> value-ofselect=".//class"/> attribute> attributename="C_BRND_CDE"> value-ofselect=".//brand"/> attribute> attributename="C_DRV_OWNER"> value-ofselect=".//drvOwner"/> attribute> attributename="N_VHL_VAL"> value-ofselect=".//vhlPrice"/> attribute> attributename="N_SET_NUM"> value-ofselect=".//seat"/> attribute> attributename="N_TON_NUM"> value-ofselect=".//tonnage"/> attribute> attributename="C_YL18"> value-ofselect=".//tonnage"/> attribute> attributename="C_EXT_MSR"> value-ofselect=".//displacement"/> attribute> element> element> for-each> for-eachselect="rdr"> elementname="RDR"> for-eachselect="row"> elementname="row"> attributename="C_INSRNC_CDE"> value-ofselect=".//insCode"/> attribute> attributename="C_YL4"> value-ofselect=".//grade"/> attribute> attributename="N_AMT"> value-ofselect=".//norm"/> attribute> attributename="N_YL3"> value-ofselect=".//nyl3"/> attribute> element> for-each> element> for-each> template> stylesheet> test0332xsl.xml文件内容: xmlversion="1.0"encoding="UTF-8"? > 123 --appCode投保人代码(可传当前客户编码)--> --appName投保人名称(可传当前客户名称)--> --signTime签单时间(可传当前日期。 格式yyyy-MM-dd)--> --beginTime起保时间(建议传当前日期的下一天的零时零分零秒。 格式”yyyy-MM-ddHH: mm: ss“)。 终保时间不传,默认为起保时间+1年、再减1秒。 --> 00: 00 --deptCode投保机构(可传当前登陆人员的所在机构代码——登陆返回的机构代码)--> --license车牌号码(注意,新车传”*-*”)--> --plateType号牌种类(只传代码)--> --vhlType车辆种类(只传代码)--> --useAttr使用性质(只传代码)--> --regDate初登年月(只接受”yyyy-MM-dd”的格式)--> --vhlFrame车架号(只接受17字符)--> --engineNo发动机号--> --class交管所车辆种类(只传代码,如“K33”)--> --brand车辆型号--> --drvOwner车主名称(为减少输入,可与投保人名称一致)--> --vhlPrice新车购置价--> --seat座位数(要求输入的是整数)--> --displacement排量(要求输入的是小数或空字符串““)--> --insCode险别代码--> --grade档次 --> --norm限额--> --nyl3险别“车上人员(乘客)…”的数量--> --以下的系数中,不需要设置的,可以不传相应的节点--> --drvArea指定行驶区域系数(传入区域代码。 ”303007013
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java xmlxslhtml文件转换 xmlxslhtml 文件 转换
![提示](https://static.bdocx.com/images/bang_tan.gif)