如何设置 javax.xml.transform.TransformerFactory 系统属性

Mar*_*uks 5 java xsl-fo xalan xslt-1.0

我正在使用它javax.xml.transform.Transform来将 XML 文件转换为 PDF。这本身工作得很好,但该项目的某些部分正在使用 Xalan,它实现了自己的TransformerFactory,并且其中的某些内容不适用于西里尔语。

我在https://xml.apache.org/xalan-j/usagepatterns.html发现有一个属性用于定义使用的工厂:

TransformerFactory 是一个抽象类,具有静态 newInstance() 方法,该方法实例化由 javax.xml.transform.TransformerFactory 系统属性指定的具体子类。

此系统属性的默认设置是 org.apache.xalan.processor.TransformerFactoryImpl。

我的问题是:如何设置此属性以不使用 Xalan?

Rob*_*sen 1

执行程序时,可以使用以下标志从命令行静态设置它-D

java -Dorg.apache.xalan.processor.TransformerFactoryImpl=com.xyz.YourFactory YourApp
Run Code Online (Sandbox Code Playgroud)

或者在您的应用程序中动态使用System.setProperty()

System.setProperty("org.apache.xalan.processor.TransformerFactoryImpl",
        "com.xyz.YourFactory");
Run Code Online (Sandbox Code Playgroud)

请注意,您需要使用工厂类的完全限定类名,并且工厂需要位于您的类路径上才能使它们中的任何一个正常工作。