我正在使用javax.xml.transform.Transform将xml文件转换为PDF。它本身可以很好地工作,但是该项目的某些部分使用Xalan,它实现了自己的TransformerFactory,而其中的某些内容与Cyrillic不兼容。
我在https://xml.apache.org/xalan-j/usagepatterns.html发现有一个用于定义所用工厂的属性:
TransformerFactory是带有静态newInstance()方法的抽象类,该方法实例化由javax.xml.transform.TransformerFactory系统属性指定的具体子类。
此系统属性的默认设置为org.apache.xalan.processor.TransformerFactoryImpl。
我的问题是:如何设置此属性不使用Xalan?
答案 0 :(得分:1)
执行程序时,可以使用-D
标志从命令行静态设置它:
java -Dorg.apache.xalan.processor.TransformerFactoryImpl=com.xyz.YourFactory YourApp
或使用System.setProperty()
从应用程序内部动态进行:
System.setProperty("org.apache.xalan.processor.TransformerFactoryImpl",
"com.xyz.YourFactory");
请注意,您需要使用工厂类的完全限定的类名,并且工厂必须位于您的类路径中才能使它们中的任何一个起作用。
答案 1 :(得分:0)
尝试将其设置为Java参数-Djavax.xml.transform.TransformerFactory=<factory class>
您也可以直接在程序中以TransformerFactory tf = new SomeTransformerFactoryImpl();
的形式初始化所需的工厂