我目前使用标准的 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/