java编程 使用XSL+XML生成HTML文件

    技术2022-05-20  46

    1.由于公司需要用xslt 结合 xml 使用,并生成数据,只好研究了一下;下面是一个简单示例: 第一步:创建一个userMessage.xml 文件 文件内容如下: [color=gray<?xml version="1.0" encoding="GBK" ?> <?xml-stylesheet type="text/xsl" href="userMessage.xsl"?> <user> <message> <userId>12345678900</userId> <userName>王孟</userName> <userAge>24</userAge> <userSex>男</userSex> <userTel>15221737051</userTel> </message> <message> <userId>12345678901</userId> <userName>姚萍</userName> <userAge>22</userAge> <userSex>女</userSex> <userTel>15221737052</userTel> </message> <message> <userId>12345678903</userId> <userName>知州</userName> <userAge>25</userAge> <userSex>男</userSex> <userTel>15221737053</userTel> </message> <message> <userId>12345678904</userId> <userName>张璇</userName> <userAge>23</userAge> <userSex>女</userSex> <userTel>15221737054</userTel> </message> </user>[/color] 第二步:创建一个 userMessage.xsl 文件,文件格式如下: [color=violet<?xml version="1.0" encoding="GBK" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" version="1.0" encoding="GBK" standalone="yes"/> <xsl:template match="/"> <html> <head> <title>使用XML+XSLT生成的HTML文件</title> </head> <body> <h2>我的第一个xslt 转换 html</h2> <table border="1"> <tr bgcolor="#99FF66"> <th align="center">编号</th>       <th align="center">姓名</th> <th align="center">年龄</th>       <th align="center">性别</th>     <th align="center">联系电话</th> </tr> <!-- 循环遍历 user元素下的message 的信息 --> <xsl:for-each select="user/message"> <!-- 要排序的指段 --> <xsl:sort select="userAge"></xsl:sort> <tr bgcolor="#99CCFF"> <td><xsl:value-of select="userId"></xsl:value-of></td> <td><xsl:value-of select="userName"></xsl:value-of></td> <td><xsl:value-of select="userAge"></xsl:value-of></td> <td><xsl:value-of select="userSex"></xsl:value-of></td> <td><xsl:value-of select="userTel"></xsl:value-of></td> </tr> </xsl:for-each> </table> </body> </html> </xsl:template> </xsl:stylesheet>[/color] 第三步 :创建一个 Test 测试类: package com.wm.test; import java.io.File; import java.io.IOException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; import org.w3c.dom.Document; import org.xml.sax.SAXException; public class Test { /** * 测试类 * @param args * @throws ParserConfigurationException */ public static void main(String[] args) throws ParserConfigurationException { // 实例化 DocumentBuilderFactory 对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try { //得到  DocumentBuilder 对象 DocumentBuilder db = dbf.newDocumentBuilder(); //加载 test.xml,并将其转换为 Document 对象 Document doc = db.parse("WebRoot/conf/userMessage.xml"); //实例 DOMSource 对象 DOMSource source = new DOMSource(doc); //输出结果,并定义结果输出路径 StreamResult result = new StreamResult(new File( "WebRoot/conf/userMessage.html")); //加载 xsl 文件 StreamSource ss = new StreamSource( new File("WebRoot/conf/userMessage.xsl")); //实例化 TransformerFactory 对象 TransformerFactory tff = TransformerFactory.newInstance(); Transformer tf = tff.newTransformer(ss); // 定义写个字符串 StringWriter sw = new StringWriter();     Result resulted = new StreamResult(sw); //设定字符编码方式 tf.setOutputProperty("encoding", "GBK"); //将定义好的 .xsl 格式 转换 tf.transform(source, result); tf.transform(source, resulted); String str = null; //将结果写为一个字符串,然后打印在控制台上 str = sw.toString(); System.out.println(str); } catch (ParserConfigurationException e) { e.printStackTrace(); } catch (SAXException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (TransformerConfigurationException e) { e.printStackTrace(); } catch (TransformerException e) { e.printStackTrace(); } } } 运行结果可以在路径 WebRoot/conf/  下找到 userMessage.html 文件; 该文件的效果为: <html> <head> <META http-equiv="Content-Type" content="text/html; charset=GBK"> <title>使用XML+XSLT生成的HTML文件</title> </head> <body> <h2>我的第一个xslt 转换 html</h2> <table border="1"> <tr bgcolor="#99FF66"> <th align="center">编号</th><th align="center">姓名</th><th align="center">年龄</th><th align="center">性别</th><th align="center">联系电话</th> </tr> <tr bgcolor="#99CCFF"> <td>12345678901</td><td>姚萍</td><td>22</td><td>女</td><td>15221737052</td> </tr> <tr bgcolor="#99CCFF"> <td>12345678904</td><td>张璇</td><td>23</td><td>女</td><td>15221737054</td> </tr> <tr bgcolor="#99CCFF"> <td>12345678900</td><td>王孟</td><td>24</td><td>男</td><td>15221737051</td> </tr> <tr bgcolor="#99CCFF"> <td>12345678903</td><td>知州</td><td>25</td><td>男</td><td>15221737053</td> </tr> </table> </body> </html>

    利用以上方法,实现了自动生成html。方法蛮好的。效果图如下:


    最新回复(0)