可以使用TransformerFactory.newTransformer方法获取此类的实例。然后可以使用此实例来处理来自各种来源的XML,并将转换输出写入各种目标。
此类的对象不能在同时运行的多个线程中使用。不同的转换器可以由不同的线程同时使用。
Transformer可以多次使用。参数和输出属性在转换之间保留。
- 自版本:
- 1.4
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void清除使用setParameter设置的所有参数。abstract ErrorListener获取用于转换的错误事件处理程序。abstract Properties获取转换的输出属性的副本。abstract StringgetOutputProperty(String name) 获取转换器生效的输出属性。abstract ObjectgetParameter(String name) 获取使用setParameter明确设置的参数。abstract URIResolver获取将用于解析document()中使用的URI的对象。voidreset()将此Transformer重置为其原始配置。abstract voidsetErrorListener(ErrorListener listener) 设置用于转换的错误事件监听器。abstract voidsetOutputProperties(Properties oformat) 设置转换的输出属性。abstract voidsetOutputProperty(String name, String value) 设置将用于转换的输出属性。abstract voidsetParameter(String name, Object value) 为转换添加一个参数。abstract voidsetURIResolver(URIResolver resolver) 设置将用于解析document()中使用的URI的对象。abstract void将XMLSource转换为Result。
-
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不能保证具有相同的URIResolver或ErrorListenerObject,例如Object.equals(Object obj)。它保证具有功能上相等的URIResolver和ErrorListener。- 抛出:
-
UnsupportedOperationException- 当实现未覆盖此方法时。 - 自版本:
- 1.5
-
transform
将XML
Source转换为Result。具体的转换行为由实例化Transformer时生效的TransformerFactory的设置和对Transformer实例进行的任何修改确定。空
Source表示由DocumentBuilder.newDocument()构造的空文档。转换空Source的结果取决于转换行为;它并不总是空Result。- 参数:
-
xmlSource- 要转换的XML输入。 -
outputTarget- 转换xmlSource的Result。 - 抛出:
-
TransformerException- 如果在转换过程中发生无法恢复的错误。
-
setParameter
为转换添加一个参数。将限定名称作为两部分字符串传递,命名空间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
获取使用setParameter明确设置的参数。此方法不返回默认参数值,直到在转换过程中评估节点上下文时才能确定默认值。
- 参数:
-
name- 要获取的Object的名称 - 返回:
- 使用setParameter设置的参数。
-
clearParameters
public abstract void clearParameters()清除使用setParameter设置的所有参数。 -
setURIResolver
设置将用于解析document()中使用的URI的对象。如果解析器参数为null,则URIResolver值将被清除,转换器将不再具有解析器。
- 参数:
-
resolver- 实现URIResolver接口的对象,或null。
-
getURIResolver
获取将用于解析document()中使用的URI的对象。- 返回:
- 实现URIResolver接口的对象,或null。
-
setOutputProperties
设置转换的输出属性。这些属性将覆盖在模板中使用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
获取转换的输出属性的副本。
返回的属性应包含用户设置的属性和样式表设置的属性,这些属性默认为由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
设置一个在转换中生效的输出属性。将一个合格的属性名称作为一个两部分字符串传递,命名空间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
获取转换器中生效的输出属性。
如果使用
setOutputProperty(java.lang.String, java.lang.String)设置了属性,则将返回该值。否则,如果样式表中明确指定了属性,则将返回该值。如果属性的值已经默认设置,即如果没有使用setOutputProperty(java.lang.String, java.lang.String)或样式表中明确设置值,则结果可能会因实现和输入样式表而异。- 参数:
-
name- 一个非空字符串,指定一个输出属性名称,可以是命名空间限定的。 - 返回:
- 输出属性的字符串值,如果未找到属性则返回null。
- 抛出:
-
IllegalArgumentException- 如果不支持该属性。 - 参见:
-
setErrorListener
设置转换中生效的错误事件监听器。- 参数:
-
listener- 新的错误监听器。 - 抛出:
-
IllegalArgumentException- 如果监听器为null。
-
getErrorListener
获取转换中生效的错误事件处理程序。实现必须提供默认错误监听器。- 返回:
- 当前的错误处理程序,永远不应为null。
-