java: xslt+xml==>html
6月23日
/*
* Created on Jun 22, 2005 by yangyuan
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
package test.xml;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.StringReader;
import java.io.StringWriter;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import com.pepboys.shopx.report.xml.elements.XMLReport;
/**
* @author Yang Yuan
* All rights are reserved.
*
*/
public class ConvertXML {
private static boolean DEBUG = true;
public static void main(String[] args) {
ConvertXML cm = new ConvertXML();
try {
System.out.println("—————————————");
System.out.println(cm.convertXmlToHTML(null, null));
} catch (Exception e) {
e.printStackTrace();
}
}
private String convertXmlToHTML(String xmlFile, String xslFile)
throws Exception {
String path =
"D:\\Project\\IBM\\Pepboy\\workspace"
+ "\\ReportTeamDoc\\design\\XSLSample";
xslFile = path + "\\" + "DisplayAllReport_HTML.xsl";
xmlFile = path + "\\" + "DisplayAllReport.xml";
String retStr = "";
if (DEBUG) {
System.out.println("#####################");
System.out.println("xsl file:" + xslFile);
System.out.println("xml data: \n " + xmlFile);
System.out.println("######################");
}
try {
BufferedReader fr = new BufferedReader(new FileReader(xmlFile));
StringBuffer report = new StringBuffer();
String tmpString = "";
while ((tmpString = fr.readLine()) != null) {
report.append(tmpString );
}
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer =
factory.newTransformer(new StreamSource(xslFile));
Source src = new StreamSource(new StringReader(report.toString()));
StringWriter out = new StringWriter(2000);
StreamResult res = new StreamResult(out);
transformer.transform(src, res);
// delete HTML header and tailer
StringBuffer buff = out.getBuffer();
int pos = buff.indexOf("<body>");
int lastpos = buff.lastIndexOf("</body>");
if (pos > -1 && lastpos > -1) {
retStr = buff.substring(pos + 6, lastpos);
} else {
retStr = buff.toString();
}
} catch (TransformerException ex) {
ex.printStackTrace();
}
return retStr;
}
}
相关帖子: