【发布时间】:2011-05-02 13:51:02
【问题描述】:
我有一个转换 XML 的简单代码,但它非常耗时(我必须重复很多次)。有没有人建议如何优化此代码?谢谢。
编辑:这是代码的新版本。很遗憾,我不能重用 Transformer,因为在大多数情况下 XSLTRule 是不同的。我现在重用TransformerFactory。在此之前我没有从文件中读取,所以我不能使用StreamSource。 Transformer 的初始化花费的时间最多。
private static TransformerFactory tFactory = TransformerFactory.newInstance();
public static String transform(String XML, String XSLTRule) throws TransformerException {
Source xmlInput = new StreamSource(new StringReader(XML));
Source xslInput = new StreamSource(new StringReader(XSLTRule));
Transformer transformer = tFactory.newTransformer(xslInput);
StringWriter resultWriter = new StringWriter();
Result result = new StreamResult(resultWriter);
transformer.transform(xmlInput, result);
return resultWriter.toString();
}
【问题讨论】:
-
每次都有不同的 XSL 文件?如果没有,缓存转换器。另外,这段代码本身很慢吗?你看到了什么表现?
-
每次都是不同的 XML,但 XSLT 会重复自己(尽管有很多)。我正在使用分析器,它说在这种方法上花费了很多时间。
-
在哪里这个方法?编译 XSLT 通常很慢,但如果这不是花费时间的地方……请查看opensymphony.com/'s OSCore,因为它有一些优化的 XML 实用程序,如果可以的话,可以缓存转换器。
-
@Joseph 在
Transformer的初始化上花费的时间最多。我会考虑如何做缓存。谢谢。
标签: java optimization transform