Java与XML(四)xml的转换之html

来源:互联网 发布:ssm框架电商项目源码 编辑:程序博客网 时间:2024/06/08 13:34

Xml转换是个必要而且常见的工作。这里将给出xml转换成html的例子:

myxml.xml
<?xml version="1.0" ?>
<WorkShop>
 <layer>
  <Title>a</Title>
  <Content>aa</Content>
 </layer>
 <layer>
  <Title>a1</Title>
  <Content>aa1</Content>
 </layer>
</WorkShop>

myxsl.xsl
<?xml version="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="
http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">

  <html>
  <head>
 <Title>This is a xsl2xml test</Title>
  <meta http-equiv="Content-Type" content="text/html" />
  <style>
.table2{border:#000000 solid;border-width:1 0 0 1;background:#ffffff}
.td2{border:#000000 solid;border-width:0 1 1 0;word-break:break-all;}
textarea {
 font-family: "
宋体
";
 font-size: 12px;
 font-style: normal;
 line-height: normal;
 font-weight: normal;
 font-variant: normal;
 border: none #000000;
}
td {
 font-family: "
宋体
";
 font-size: 12px;
 font-style: normal;
 line-height: normal;
 font-weight: normal;
 font-variant: normal;
 border: none #000000;
}
</style>
</head>

<body>
<xsl:for-each select="WorkShop/layer">
  <table width="100%" border="0" cellspacing="0" cellpadding="0" style="border:#000000 1 solid">
<tr>
<td>
 <table width="98%" height="98%" cellspacing="0" cellpadding="0" border="0" class="table2" align="center">
 <tr>
 <td class="td2">
 <b>
标题:
</b>
 <xsl:value-of select="Title"/>
 </td>
 </tr>
 <br/>
 
 <tr>
 <td class="td2">
 <b>
内容:
</b>
 <br/>
 <textarea readonly="readonly" name="textarea1" style="width:99%;overflow:visible;readonly" wrap="VIRTUAL">
 <xsl:value-of select="Content"/>
 </textarea>
 </td>
 </tr>
</table>
</td>
</tr>
</table>
</xsl:for-each>

</body>
</html>
</xsl:template>
</xsl:stylesheet>

注意上面这两个文件,在保存时要用Unicode编码,不然java程序有可能报错,而你却找不到到底是哪里出了问题。

转换程序xsl2xml.java
package src;
import java.io.*;
import org.w3c.dom.Document;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.parsers.*;

public class xsl2xml {
 private String xmlfile,xslfile,outputfile;
 
 public xsl2xml(String xmlfile,String xslfile,String outputfile){
 this.xmlfile=xmlfile;
 this.xslfile=xslfile;
 this.outputfile=outputfile;
 }
 
 public void translate(){
  try{
   DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
   DocumentBuilder db=dbf.newDocumentBuilder();
   Document doc=db.parse(xmlfile);
   TransformerFactory factory=TransformerFactory.newInstance();
   
   Transformer transformer=factory.newTransformer(new StreamSource(xslfile));
   transformer.setOutputProperty(OutputKeys.ENCODING,"GB2312");
   PrintWriter pw=new PrintWriter(new FileOutputStream(outputfile));
   StreamResult result=new StreamResult(pw);
   
   transformer.transform(new DOMSource(doc),result);
   
  }catch(Exception exp){
   exp.printStackTrace();
  }
 }

 public static void main(String[] args) {
  xsl2xml myto=new xsl2xml(
                "f://tomcat5//webapps//myxml//xmldata//myxml.xml",
    "f://tomcat5//webapps//myxml//xmldata//myxsl.xsl",
    "f://tomcat5//webapps//myxml//xmldata//xsl2xml.html"
                );
  myto.translate();
 
 }
}

这个转换颇具实验性,而实际意义并不大。因为,如果在myxml.xml中和myxsl.xsl关联,用浏览器打开myxml.xml时自动就实现了转换。
但浏览器并不能转换xml文件成其他的格式。因此,我们可以以此为契,学会xml的转换。我将在(五)中继续转换这个题目――xml2pdf