可以使用TransformerFactory.newTransformer
方法获取此类的实例。然后可以使用此实例来处理来自各种来源的XML,并将转换输出写入各种目标。
此类的对象不能在同时运行的多个线程中使用。不同的转换器可以由不同的线程同时使用。
Transformer
可以多次使用。参数和输出属性在转换之间保留。
- 自版本:
- 1.4
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract void
清除使用setParameter设置的所有参数。abstract ErrorListener
获取用于转换的错误事件处理程序。abstract Properties
获取转换的输出属性的副本。abstract String
getOutputProperty
(String name) 获取转换器生效的输出属性。abstract Object
getParameter
(String name) 获取使用setParameter明确设置的参数。abstract URIResolver
获取将用于解析document()中使用的URI的对象。void
reset()
将此Transformer
重置为其原始配置。abstract void
setErrorListener
(ErrorListener listener) 设置用于转换的错误事件监听器。abstract void
setOutputProperties
(Properties oformat) 设置转换的输出属性。abstract void
setOutputProperty
(String name, String value) 设置将用于转换的输出属性。abstract void
setParameter
(String name, Object value) 为转换添加一个参数。abstract void
setURIResolver
(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
或ErrorListener
Object
,例如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。
-