在做使用XSL+XML生成HTML时遇到一个问题,网上搜索到的代码大多以读一个文件路径的方式读取xsl文件(来源:http://www.blogjava.net/yangxiang/archive/2009/08/11/290688.html),
Source xslSource = new StreamSource(xslFileName);
但是我最终是要把方法wrap成一个custom component,xsl是通过一个Document变量传进来,于是尝试采用如下方法读xsl文件:
Source xslSource = new DOMSource(xslDoc);
执行没有出错,但是生成的html没有包含xml里面数据,总之结果不正确。于是想办法把Document转换成一个stream后按Source xslSource = new StreamSource(xslFileName);同样方法读取Source。
以下是将Document转换成ByteArrayInputStream的方法:
public static ByteArrayInputStream ConvertDoc2Stream(org.w3c.dom.Document myDoc){
ByteArrayInputStream byteStream = null;
try{
TransformerFactory transFactory=TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
transformer.setOutputProperty("indent", "yes");
DOMSource source = new DOMSource();
source.setNode(myDoc);
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
StreamResult result = new StreamResult();
result.setOutputStream(outputStream);
transformer.transform(source, result);
byteStream = new ByteArrayInputStream(outputStream.toByteArray());
}catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return byteStream;
}
转载于:https://blog.51cto.com/positiverock/1638220