我目前正在开发一个Java Web项目(Spring),它涉及大量使用xsl转换。样式表很少更改,因此它们当前是缓存的。我正在考虑通过将xsl-s编译成类文件来提高性能,这样就不必在每个请求中解释它们。
我是Java的新手,所以我真的不太了解生态系统。这样做的最佳方法是什么(图书馆,方法等)?
谢谢,
亚历
答案 0 :(得分:4)
您可能不必编译到.class
来实现目标,您可以在每次运行时编译一次xsl并重新使用已编译的实例进行所有转换。
为此,您需要创建一个Templates
对象,例如:
TransformerFactory factory = TransformerFactory.newInstance();
factory.setErrorListener(new ErrorListener( ... ));
xslTemplate = factory.newTemplates(new StreamSource( ... ));
并使用模板让变换器完成工作:
Transformer transformer = xslTemplate.newTransformer();
根据您使用的XSL库,您的里程可能会有所不同。
答案 1 :(得分:2)
您需要一个模板和一个样式表缓存:
http://onjava.com/pub/a/onjava/excerpt/java_xslt_ch5/index.html?page=9
请注意线程安全,因为变形金刚不是线程安全的。最好在ThreadLocal中进行转换以进行隔离。
答案 2 :(得分:1)
考虑使用Gregor / XSLT编译器