模块 java.xml

类 Transformer

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

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

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

此类的对象不能在并发运行的多个线程中使用。不同的线程可以同时使用不同的 Transformer。

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

自从:
1.4
  • 构造方法详细信息

    • Transformer

      protected Transformer()
      默认构造方法是有意保护的。
  • 方法详情

    • reset

      public void reset()

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

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

      不能保证重置 Transformer 具有相同的 URIResolver ErrorListener 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 - 如果值为空。
    • 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 转换 (XSLT) W3C 推荐标准的第 16 节 指定的默认属性“默认”。用户或样式表专门设置的属性应该在基本属性列表中,而没有专门设置的 XSLT 默认属性应该是默认属性列表。因此,getOutputProperties().getProperty(String key) 将获取样式表中setOutputProperty(java.lang.String, java.lang.String) setOutputProperties(java.util.Properties) 设置的任何属性,or 默认属性,而 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 - 如果监听器为空。
    • getErrorListener

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