我使用JAXP XSLT API(javax.xml.transform)来转换xml文件。
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xslSource);
transformer.transform(inputSource, outputResult);
TransformerFactory的javadoc说: 它使用以下有序查找过程来确定要加载的TransformerFactory实现类:
我想知道如何确定哪个是默认的TransformerFactory实例?
答案 0 :(得分:3)
"平台"这里是Java-speak,用于您正在使用的Java编译器/运行时。所以"平台默认"表示JDK决定的任何内容。对于Oracle JDK,它是内置于JDK的Xalan XSLT 1.0引擎的一个版本。不同的JDK可以使用不同的默认值。
答案 1 :(得分:3)
来自Oracle JDK 1.7
班级javax.xml.transform.TransformerFactory
:
默认Transformer是XSLTC(最初来自Xalan)。 XSLTC是编译版本(XSLTC中的' C')
com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl
public static TransformerFactory newInstance()
throws TransformerFactoryConfigurationError {
try {
return (TransformerFactory) FactoryFinder.find(
/* The default property name according to the JAXP spec */
"javax.xml.transform.TransformerFactory",
/* The fallback implementation class name, XSLTC */
"com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl");
} catch (FactoryFinder.ConfigurationError e) {
throw new TransformerFactoryConfigurationError(
e.getException(),
e.getMessage());
}
}