java - 如何使用 Java 使用 XSL 转换 XML

标签 java xml transform xslt

我目前使用标准的 javax.xml.transform 库通过 XSL 将我的 XML 转换为 CSV。我的 XSL 文件很大——大约有 950 行。我的 XML 文件也可能非常大。

它在原型(prototype)阶段工作良好,XSL 的一小部分在大约 50 行左右就位。现在在“最终系统”中,当它执行转换时出现错误Branch target offset too large for short

private String transformXML() {
    String formattedOutput = "";
    try {

        TransformerFactory tFactory = TransformerFactory.newInstance();            
        Transformer transformer =
                tFactory.newTransformer( new StreamSource( xslFilename ) );

        StreamSource xmlSource = new StreamSource(new ByteArrayInputStream( xmlString.getBytes() ) );
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        transformer.transform( xmlSource, new StreamResult( baos ) );

        formattedOutput = baos.toString();

    } catch( Exception e ) {
        e.printStackTrace();
    }

    return formattedOutput;
}

我看到了一些关于此错误的帖子,但不太确定该怎么做。
我在代码方面做错了什么吗? 是否有任何替代的第 3 方变压器可以做到这一点?

谢谢,

安德斯

最佳答案

尝试 Saxon相反。

您的代码将保持不变。您需要做的就是在 JVM 的系统属性中将 javax.xml.transform.TransformerFactory 设置为 net.sf.saxon.TransformerFactoryImpl

关于java - 如何使用 Java 使用 XSL 转换 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4095287/

相关文章:

c# - 如何在与另一个游戏对象发生碰撞时立即停止移动的游戏对象?

javascript - 子级的CSS变换比例 - 父级仍然占据相同的空间

javascript - 如何使用Javascript进行变换?

java - OpenCSV CSVReader UTF-8 编码

ios - 快速处理 XML 解析响应

java - 我如何与动画互动?

xml - 在内存中的 XQuery 中多次编辑同一个文档节点

c# - 在 C# 中解析 XML 文件

java - 如何在 GUI 中向数组添加值

java - 无法在 JBOSS 8.2 上部署 CXF 服务