Java:需要帮助优化部分代码

标签 java optimization transform

我有一个简单的转换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/

相关文章:

java - 如何动态地将数组绑定(bind)到JComboBox?

java - 如何获取 MultiMap 值中元素的索引

performance - 大O,对一系列n个数字求和的复杂性是多少?

CSS Skew 仅容器,而非内容

html - CSS hover 效果移动不流畅

javascript - Adobe Edge Animate 和 d3.js : d3. scale.range([value]) 在 Chrome 和 Safari 中无法正常工作

java - Sonar "Credentials should not be hard-coded"错误

java - Swing 对话框绘制问题

java - Java 编译器是否有效地处理内联字符串?

java - 优化 digit <= 2 算法(类似于 Project Euler 303)