Module java.xml

Class Transformer

java.lang.Object
javax.xml.transform.Transformer

public abstract class Transformer extends Object
一个此抽象类的实例可以将源树转换为结果树。

可以使用TransformerFactory.newTransformer方法获取此类的实例。然后可以使用此实例来处理来自各种来源的XML,并将转换输出写入各种目标。

此类的对象不能在同时运行的多个线程中使用。不同的转换器可以由不同的线程同时使用。

Transformer可以多次使用。参数和输出属性在转换之间保留。

自版本:
1.4
  • Constructor Details

    • Transformer

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

    • reset

      public void reset()

      将此Transformer重置为其原始配置。

      Transformer将重置为使用TransformerFactory.newTransformer()TransformerFactory.newTransformer(Source source)Templates.newTransformer()创建时的相同状态。 reset()旨在允许重用现有的Transformer,从而节省与创建新Transformer相关的资源。

      重置的Transformer不能保证具有相同的URIResolverErrorListener Object,例如Object.equals(Object obj)。它保证具有功能上相等的URIResolverErrorListener

      抛出:
      UnsupportedOperationException - 当实现未覆盖此方法时。
      自版本:
      1.5
    • transform

      public abstract void transform(Source xmlSource, Result outputTarget) throws TransformerException

      将XML Source转换为Result。具体的转换行为由实例化Transformer时生效的TransformerFactory的设置和对Transformer实例进行的任何修改确定。

      Source表示由DocumentBuilder.newDocument()构造的空文档。转换空Source的结果取决于转换行为;它并不总是空Result

      参数:
      xmlSource - 要转换的XML输入。
      outputTarget - 转换xmlSourceResult
      抛出:
      TransformerException - 如果在转换过程中发生无法恢复的错误。
    • setParameter

      public abstract void setParameter(String name, Object value)
      为转换添加一个参数。

      将限定名称作为两部分字符串传递,命名空间URI用大括号({})括起,后跟本地名称。如果名称具有空URL,则字符串仅包含本地名称。应用程序可以通过测试名称的第一个字符是否为'{'字符来安全地检查非空URI。

      例如,如果从使用<xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>定义的元素中获取了URI和本地名称,则限定名称将是"{http://xyz.foo.com/yada/baz.html}foo"。请注意,不使用前缀。

      参数:
      name - 参数的名称,可以以大括号({})开始的命名空间URI。
      value - 值对象。这可以是任何有效的Java对象。处理器应提供适当的对象转换,或者简单地将对象传递给扩展使用。
      抛出:
      NullPointerException - 如果值为null。
    • getParameter

      public abstract Object getParameter(String name)
      获取使用setParameter明确设置的参数。

      此方法不返回默认参数值,直到在转换过程中评估节点上下文时才能确定默认值。

      参数:
      name - 要获取的Object的名称
      返回:
      使用setParameter设置的参数。
    • clearParameters

      public abstract void clearParameters()
      清除使用setParameter设置的所有参数。
    • setURIResolver

      public abstract void setURIResolver(URIResolver resolver)
      设置将用于解析document()中使用的URI的对象。

      如果解析器参数为null,则URIResolver值将被清除,转换器将不再具有解析器。

      参数:
      resolver - 实现URIResolver接口的对象,或null。
    • getURIResolver

      public abstract URIResolver getURIResolver()
      获取将用于解析document()中使用的URI的对象。
      返回:
      实现URIResolver接口的对象,或null。
    • setOutputProperties

      public abstract void setOutputProperties(Properties oformat)
      设置转换的输出属性。这些属性将覆盖在模板中使用xsl:output设置的属性。

      如果此函数的参数为null,则先前设置的任何属性将被移除,值将恢复为模板对象中定义的值。

      将限定属性键名称作为两部分字符串传递,命名空间URI用大括号({})括起,后跟本地名称。如果名称具有空URL,则字符串仅包含本地名称。应用程序可以通过测试名称的第一个字符是否为'{'字符来安全地检查非空URI。

      例如,如果从使用<xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>定义的元素中获取了URI和本地名称,则限定名称将是"{http://xyz.foo.com/yada/baz.html}foo"。请注意,不使用前缀。

      如果任何参数键未被识别且未命名空间限定,则将抛出IllegalArgumentException,并且不会返回该属性。
      参数:
      oformat - 一组输出属性,将用于覆盖转换中生效的相同属性。
      抛出:
      IllegalArgumentException - 当键未被识别且未命名空间限定时。
      参见:
    • getOutputProperties

      public abstract Properties getOutputProperties()

      获取转换的输出属性的副本。

      返回的属性应包含用户设置的属性和样式表设置的属性,这些属性默认为由XSL Transformations (XSLT) W3C Recommendation第16节指定的默认属性。用户或样式表明确设置的属性应在基本Properties列表中,而未明确设置的XSLT默认属性应在默认Properties列表中。因此,getOutputProperties().getProperty(String key)将获取由setOutputProperty(java.lang.String, java.lang.String)setOutputProperties(java.util.Properties)、样式表或默认属性设置的任何属性,而getOutputProperties().get(String key)将仅检索由setOutputProperty(java.lang.String, java.lang.String)setOutputProperties(java.util.Properties)或样式表明确设置的属性。

      请注意,返回的Properties对象的更改不会影响转换器包含的属性。

      如果任何参数键未被识别且未命名空间限定,则将忽略该属性并不返回。换句话说,行为与setOutputProperties不是正交的。

      返回:
      下一次转换生效的输出属性集的副本。
      参见:
    • setOutputProperty

      public abstract void setOutputProperty(String name, String value) throws IllegalArgumentException
      设置一个在转换中生效的输出属性。

      将一个合格的属性名称作为一个两部分字符串传递,命名空间URI用大括号({})括起来,然后是本地名称。如果名称具有空URL,则字符串只包含本地名称。应用程序可以通过检查名称的第一个字符是否为'{'字符来安全地检查非空URI。

      例如,如果从使用<xyz:foo xmlns:xyz="http://xyz.foo.com/yada/baz.html"/>定义的元素中获取了URI和本地名称,则合格名称将是"{http://xyz.foo.com/yada/baz.html}foo"。请注意不使用前缀。

      通过调用此方法不会影响传递给setOutputProperties(java.util.Properties)的Properties对象。

      参数:
      name - 一个非空字符串,指定一个输出属性名称,可以是命名空间限定的。
      value - 输出属性的非空字符串值。
      抛出:
      IllegalArgumentException - 如果不支持该属性,并且没有使用命名空间限定。
      参见:
    • getOutputProperty

      public abstract String getOutputProperty(String name) throws IllegalArgumentException

      获取转换器中生效的输出属性。

      如果使用setOutputProperty(java.lang.String, java.lang.String)设置了属性,则将返回该值。否则,如果样式表中明确指定了属性,则将返回该值。如果属性的值已经默认设置,即如果没有使用setOutputProperty(java.lang.String, java.lang.String)或样式表中明确设置值,则结果可能会因实现和输入样式表而异。

      参数:
      name - 一个非空字符串,指定一个输出属性名称,可以是命名空间限定的。
      返回:
      输出属性的字符串值,如果未找到属性则返回null。
      抛出:
      IllegalArgumentException - 如果不支持该属性。
      参见:
    • setErrorListener

      public abstract void setErrorListener(ErrorListener listener) throws IllegalArgumentException
      设置转换中生效的错误事件监听器。
      参数:
      listener - 新的错误监听器。
      抛出:
      IllegalArgumentException - 如果监听器为null。
    • getErrorListener

      public abstract ErrorListener getErrorListener()
      获取转换中生效的错误事件处理程序。实现必须提供默认错误监听器。
      返回:
      当前的错误处理程序,永远不应为null。