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

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>&#20351;&#29992;XML+XSLT&#29983;&#25104;&#30340;HTML&#25991;&#20214;</title>
</head>
<body>
<h2>&#25105;&#30340;&#31532;&#19968;&#20010;xslt &#36716;&#25442; html</h2>
<table border="1">
<tr bgcolor="#99FF66">
<th align="center">&#32534;&#21495;</th><th align="center">&#22995;&#21517;</th><th align="center">&#24180;&#40836;</th><th align="center">&#24615;&#21035;</th><th align="center">&#32852;&#31995;&#30005;&#35805;</th>
</tr>
<tr bgcolor="#99CCFF">
<td>12345678901</td><td>&#23002;&#33805;</td><td>22</td><td>&#22899;</td><td>15221737052</td>
</tr>
<tr bgcolor="#99CCFF">
<td>12345678904</td><td>&#24352;&#29831;</td><td>23</td><td>&#22899;</td><td>15221737054</td>
</tr>
<tr bgcolor="#99CCFF">
<td>12345678900</td><td>&#29579;&#23391;</td><td>24</td><td>&#30007;</td><td>15221737051</td>
</tr>
<tr bgcolor="#99CCFF">
<td>12345678903</td><td>&#30693;&#24030;</td><td>25</td><td>&#30007;</td><td>15221737053</td>
</tr>
</table>
</body>
</html>

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值