gpt4 book ai didi

java - 如何在 Java 中选择撒克逊 TransformerFactory

转载 作者:IT老高 更新时间:2023-10-28 20:50:03 26 4
gpt4 key购买 nike

在我的 Web 应用程序中,我需要使用 Saxon TransformerFactory 才能使用 XSLT 2.0,但我不能使用 setProperty 方法,因为我在 Web 服务器上没有此权限并且有一个安全管理器。

所以我读到应该可以这样做:

Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API will look for a classname in the file META-INF/services/javax.xml.transform.TransformerFactory in jars available to the runtime.

我在 WEB-INF/lib/saxon9.jar 中找到了这个文件,但是当我建立一个 TransformerFactory 时,总是选择默认工厂而不是 Saxon 工厂。

如何选择撒克逊变压器厂?

谢谢

最佳答案

正确的方法是在获取新的 TransformerFactory 时指定工厂类。

我不认为调用特定的工厂实现会起作用 - 我相信默认的系统转换器可能仍会返回(至少当我在类路径中有 xalan 和 saxon 时会发生这种情况)。

示例:

TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl",null);

或为撒克逊人

TransformerFactory tFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);

Javadocs:

Obtain a new instance of a TransformerFactory from factory class name. This function is useful when there are multiple providers in the classpath. It gives more control to the application as it can specify which provider should be loaded. Once an application has obtained a reference to a TransformerFactory it can use the factory to configure and obtain transformer instances.

关于java - 如何在 Java 中选择撒克逊 TransformerFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2968190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com