我有一个简单的转换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();
}
最佳答案
您应该做的第一件事是跳过不必要的 XML 字符串到字节的转换(尤其是硬编码的、可能不正确的编码)。您可以使用 StringReader
并将其传递给 StreamSource
构造函数。结果相同:使用 StringWriter
并避免转换。
当然,如果您首先在将 XML 从文件(字节)转换为 String
之后调用该方法(再次使用可能错误的编码),则更好直接从文件中读取 StreamSource
。
关于Java:需要帮助优化部分代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5857971/