可以使用TransformerFactory.newTransformer
方法获取此类的实例。然后可以使用此实例处理来自各种来源的 XML,并将转换输出写入各种接收器。
此类的对象不能在并发运行的多个线程中使用。不同的线程可以同时使用不同的 Transformer。
Transformer
可以多次使用。跨转换保留参数和输出属性。
- 自从:
- 1.4
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract 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
。
-
构造方法详细信息
-
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)
。它保证具有功能相同的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
- 如果值为空。
-
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 转换 (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
设置将对转换生效的输出属性。将限定属性名称作为两部分字符串传递,命名空间 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
- 如果监听器为空。
-
getErrorListener
获取对转换有效的错误事件处理程序。实现必须提供默认的错误监听。- 返回:
- 当前的错误处理程序,它永远不应为 null。
-