当前位置: 首页 > 知识库问答 >
问题:

默认的TransformerFactory是什么?

辛承
2023-03-14

我正在使用JAXP XSLT API(javax.xml.transform)来转换xml文件。

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer(xslSource);
transformer.transform(inputSource, outputResult);

TransformerFactory的javadoc表示:它使用以下有序查找过程来确定要加载的TransformerFactory实现类:

  1. 使用javax。xml。使改变TransformerFactory系统属性
  2. 使用JRE目录中的属性文件“lib/jaxp.properties”。此配置文件采用标准java。util。Properties格式化并包含实现类的完全限定名称,键是上面定义的系统属性。jaxp。JAXP实现只读取属性文件一次,然后缓存其值以供将来使用。如果第一次尝试读取文件时该文件不存在,则不会再尝试检查其是否存在。无法更改jaxp中任何属性的值。第一次读取后的属性
  3. 如果可用,请使用服务API(如JAR规范中所述)来确定类名。服务API将在META-INF/Services/javax文件中查找类名。xml。使改变运行时可用的JAR中的TransformerFactory
  4. 平台默认TransformerFactory实例

我想知道如何确定哪个是默认的TransformerFactory实例?

共有2个答案

司马萧迟
2023-03-14

来自Oracle JDK 1.7

类javax.xml.transform.TransformerFactory

默认转换器是XSLTC(最初由Xalan派生)。XSLTC是编译版本(XSLTC中的“C”)com。太阳组织。阿帕奇。泽兰。内部的xsltc。特拉克斯。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());
    }
}

花高爽
2023-03-14

这里的“平台”是您正在使用的Java编译器/运行时的Java语言。因此,“平台默认”意味着JDK决定的一切。就Oracle JDK而言,它是内置在JDK中的Xalan XSLT 1.0引擎的一个版本。不同的JDK可以使用不同的默认值。

 类似资料:
  • Kubernetes的pods(部署)活跃性和就绪性问题可以用这个初始延迟来配置----这意味着问题将在容器启动后的这多次发送之后开始。如果没有指定,默认值是多少?我好像找不到了。periodSeconds的默认值记录为10秒。 谢谢

  • 问题内容: 如果没有覆盖该方法,默​​认的实现是什么? 问题答案: 然后,此类从其祖先之一继承。如果它们都不覆盖它,则使用Object.hashCode。 从文档: 在合理可行的范围内,由Object类定义的hashCode方法确实为不同的对象返回不同的整数。(通常通过将对象的内部地址转换为整数来实现,但是JavaTM编程语言不需要此实现技术。) 因此默认实现是特定于JVM的

  • 问题内容: 我正在使用EC2服务器实例。使用以下命令安装Jenkins: 但是我需要在Jenkins服务器上安装软件,因此在我的EC2实例中 进入詹金斯服务器。然后我试着做 但是它提示我输入詹金斯密码。我已经在互联网上搜索了4个小时,没有任何东西可以帮助我在jenkins服务器中获得管理特权。 所以我在shell中使用以下命令来构建我的项目: 这是我得到的错误: 问题答案: 解决方法如下: 停止詹

  • 问题内容: UTF-8是Java中的默认编码吗? 如果没有,我怎么知道默认使用哪种编码? 问题答案: JVM的默认字符集是运行它的系统的默认字符集。对此没有特定的值,并且通常不应将默认编码视为任何特定的值。 可以在运行时通过对其进行访问,尽管这对你有用,但实际上你应该始终在明确指定编码的情况下这样做。

  • 问题内容: 我经常使用时髦的东西作为字典的键,因此,我想知道什么是正确的方法-这是通过为对象实现良好的哈希方法实现的。我知道这里提出的其他问题[是实现 hash的好方法,但我想了解默认值如何用于自定义对象,以及是否有可能依赖它。 我注意到可变项显然是不可哈希的,因为会引发错误……但是奇怪的是,自定义类是可哈希的: 那么,有人知道此默认哈希函数如何工作吗?通过了解这一点,我想知道: 如果我放置与字典

  • 我正在开发一个使用 JPA 和Hibernate的项目,我刚刚注意到实体没有任何关系注释,例如@ManyToOne、@OneToOne等。所以我的问题是,JPA / Hibernate是否为每个案例添加了默认注释? 这里有一个例子 JPA是否默认在此属性中添加@OneTo的注释?