Module java.xml

Class TransformerFactory

java.lang.Object
javax.xml.transform.TransformerFactory
直接已知的子类:
SAXTransformerFactory

public abstract class TransformerFactory extends Object

TransformerFactory实例可用于创建TransformerTemplates对象。

确定要创建哪个工厂实现的系统属性名为"javax.xml.transform.TransformerFactory"。此属性命名了TransformerFactory抽象类的一个具体子类。如果未定义该属性,则将使用平台默认值。

自版本:
1.5
  • Constructor Details

    • TransformerFactory

      protected TransformerFactory()
      默认构造函数是有意受保护的。
  • Method Details

    • newDefaultInstance

      public static TransformerFactory newDefaultInstance()
      创建TransformerFactory内置系统默认实现的新实例。
      返回:
      TransformerFactory内置系统默认实现的新实例。
      自版本:
      9
    • newInstance

      public static TransformerFactory newInstance() throws TransformerFactoryConfigurationError
      获取TransformerFactory的新实例。此方法使用JAXP查找机制来确定要加载的TransformerFactory实现类。

      一旦应用程序获得对TransformerFactory的引用,就可以使用工厂来配置和获取转换器实例。

      返回:
      新的TransformerFactory实例,永不为null。
      抛出:
      TransformerFactoryConfigurationError - 在服务配置错误的情况下抛出,或者如果实现不可用或无法实例化。
    • newInstance

      public static TransformerFactory newInstance(String factoryClassName, ClassLoader classLoader) throws TransformerFactoryConfigurationError
      从工厂类名获取TransformerFactory的新实例。当类路径中存在多个提供程序时,此函数很有用。它为应用程序提供更多控制,因为可以指定应加载哪个提供程序。

      一旦应用程序获得对TransformerFactory的引用,就可以使用工厂来配置和获取转换器实例。

      故障排除提示

      设置jaxp.debug系统属性将导致此方法向System.err打印大量关于其操作和查找位置的调试消息。

      如果遇到问题,请尝试:

       java -Djaxp.debug=1 YourProgram ....
       
      参数:
      factoryClassName - 提供javax.xml.transform.TransformerFactory实现的完全限定工厂类名。
      classLoader - 用于加载工厂类的ClassLoader。如果为null,则使用当前Thread的上下文类加载器来加载工厂类。
      返回:
      新的TransformerFactory实例,永不为null。
      抛出:
      TransformerFactoryConfigurationError - 如果factoryClassNamenull,或者无法加载、实例化工厂类。
      自版本:
      1.6
      参见:
    • newTransformer

      public abstract Transformer newTransformer(Source source) throws TransformerConfigurationException
      Source处理为Transformer ObjectSource是符合XSL Transformations (XSLT) Version 1.0的XSLT文档。必须注意不要在多个并发运行的Thread中使用此Transformer。不同的TransformerFactory可以由不同的Thread同时使用。
      参数:
      source - 用于创建Transformer的XSLT文档的Source。XML Source的示例包括DOMSourceSAXSourceStreamSource
      返回:
      可用于在单个Thread中执行转换的Transformer对象,永不为null
      抛出:
      TransformerConfigurationException - 如果解析Source时出现错误或无法创建Transformer实例。
      参见:
    • newTransformer

      public abstract Transformer newTransformer() throws TransformerConfigurationException
      创建一个执行SourceResult的复制,即"身份转换"的新Transformer
      返回:
      可用于在单个线程中执行转换的Transformer对象,永不为null。
      抛出:
      TransformerConfigurationException - 当无法创建Transformer实例时。
    • newTemplates

      public abstract Templates newTemplates(Source source) throws TransformerConfigurationException
      Source处理为Templates对象,这是源的编译表示。然后可以跨多个线程同时使用此Templates对象。创建Templates对象允许TransformerFactory对转换指令进行详细的性能优化,而不会影响运行时转换。
      参数:
      source - 包含URL、输入流等的对象。
      返回:
      用于转换目的的Templates对象,永不为null
      抛出:
      TransformerConfigurationException - 当解析以构造Templates对象失败时抛出。
    • getAssociatedStylesheet

      public abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) throws TransformerConfigurationException
      通过匹配给定条件,获取与XML Source文档相关联的样式表规范,通过xml-stylesheet处理指令。请注意,可能返回多个样式表,此时它们将被视为单个样式表中的导入或级联列表应用。
      参数:
      source - XML源文档。
      media - 要匹配的媒体属性。可能为null,此时将使用首选样式表(即alternate = no)。
      title - 要匹配的title属性的值。可能为null。
      charset - 要匹配的charset属性的值。可能为null。
      返回:
      适合传递给TransformerFactorySource Object
      抛出:
      TransformerConfigurationException - 如果在解析source期间发生错误,则抛出异常。
      参见:
    • setURIResolver

      public abstract void setURIResolver(URIResolver resolver)
      设置一个在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。
      参数:
      resolver - 实现URIResolver接口的对象,或null。
    • getURIResolver

      public abstract URIResolver getURIResolver()
      获取在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。
      返回:
      使用setURIResolver设置的URIResolver。
    • setFeature

      public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException

      为此TransformerFactory和由此工厂创建的TransformerTemplate设置一个特性。

      特性名称是完全限定的URI。实现可能定义自己的特性。如果这个TransformerFactory或它创建的TransformerTemplate不支持该特性,则会抛出TransformerConfigurationExceptionTransformerFactory可能会公开一个特性值,但无法更改其状态。

      所有实现都必须支持XMLConstants.FEATURE_SECURE_PROCESSING特性。当特性为:

      参数:
      name - 特性名称。
      value - 特性状态为truefalse
      抛出:
      TransformerConfigurationException - 如果这个TransformerFactory或它创建的TransformerTemplate不支持该特性。
      NullPointerException - 如果name参数为null。
    • getFeature

      public abstract boolean getFeature(String name)
      查找特性的值。

      特性名称是完全限定的URI。实现可能定义自己的特性。如果这个TransformerFactory或它创建的TransformerTemplate不支持该特性,则返回falseTransformerFactory可能会公开一个特性值,但无法更改其状态。

      参数:
      name - 特性名称。
      返回:
      特性的当前状态,为truefalse
      抛出:
      NullPointerException - 如果name参数为null。
    • setAttribute

      public abstract void setAttribute(String name, Object value)
      允许用户在底层实现上设置特定属性。在此上下文中,属性被定义为实现提供的选项。如果底层实现不识别属性,则会抛出IllegalArgumentException

      所有实现实现JAXP 1.5或更新版本都必须支持XMLConstants.ACCESS_EXTERNAL_DTDXMLConstants.ACCESS_EXTERNAL_STYLESHEET属性。

      参数:
      name - 属性的名称。
      value - 属性的值。
      抛出:
      IllegalArgumentException - 当实现不识别属性时。
    • getAttribute

      public abstract Object getAttribute(String name)
      允许用户在底层实现上检索特定属性。如果底层实现不识别属性,则会抛出IllegalArgumentException
      参数:
      name - 属性的名称。
      返回:
      值 属性的值。
      抛出:
      IllegalArgumentException - 当实现不识别属性时。
    • setErrorListener

      public abstract void setErrorListener(ErrorListener listener)
      为TransformerFactory设置错误事件监听器,用于处理转换指令,而不是转换本身。如果ErrorListener监听器为null,则会抛出IllegalArgumentException
      参数:
      listener - 新的错误监听器。
      抛出:
      IllegalArgumentException - 当listenernull时。
    • getErrorListener

      public abstract ErrorListener getErrorListener()
      获取TransformerFactory的错误事件处理程序。
      返回:
      当前的错误处理程序,永远不应为null。