public abstract class Transformer extends Object
该类的一个实例可以使用TransformerFactory.newTransformer
方法获得。 然后,该实例可用于从各种源处理XML,并将转换输出写入各种汇。
此类的对象可能不会同时运行在多个线程中。 不同的线程可以同时使用不同的变压器。
A Transformer
可以多次使用。 跨转换保留参数和输出属性。
Modifier | Constructor and Description |
---|---|
protected |
Transformer()
默认构造函数是有意保护的。
|
Modifier and Type | Method and Description |
---|---|
abstract void |
clearParameters()
清除所有使用setParameter设置的参数。
|
abstract ErrorListener |
getErrorListener()
获取有效转换的错误事件处理程序。
|
abstract Properties |
getOutputProperties()
获取转换的输出属性的副本。
|
abstract String |
getOutputProperty(String name)
获取对变压器有效的输出属性。
|
abstract Object |
getParameter(String name)
获取使用setParameter显式设置的参数。
|
abstract URIResolver |
getURIResolver()
获取一个用于解析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 |
transform(Source xmlSource, Result outputTarget)
将XML
Source 转换为
Result 。
|
public void reset()
将此Transformer
重置为原始配置。
Transformer
被重置为相同的状态,当它被用创建为TransformerFactory.newTransformer()
, TransformerFactory.newTransformer(Source source)
或Templates.newTransformer()
。 reset()
旨在允许现有的Transformer
s的重用,从而节省与创建新的Transformer
s相关的资源。
复位Transformer
不能保证具有相同的URIResolver
或Object的 Object
,例如Object.equals(Object obj)
。 保证功能相当于URIResolver
和ErrorListener
。
UnsupportedOperationException
- 实现时不覆盖此方法。
public abstract void transform(Source xmlSource, Result outputTarget) throws TransformerException
将XML Source
转换为Result
。 具体的转换行为由TransformerFactory的设置TransformerFactory
,当Transformer
被实例化并对Transformer
实例进行任何修改时。
空Source
由作为构成被表示为一个空文件DocumentBuilder.newDocument()
。 转换空Source
的结果取决于转换行为; 它并不总是一个空的Result
。
xmlSource
- 要转换的XML输入。
outputTarget
-
Result
xmlSource的
xmlSource
。
TransformerException
- 如果在转换过程中出现不可恢复的错误。
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
- 如果值为空。
public abstract Object getParameter(String name)
此方法不返回默认参数值,该参数值在转换过程中评估节点上下文之前无法确定。
name
- 的
Object
得到
public abstract void clearParameters()
public abstract void setURIResolver(URIResolver resolver)
如果解析器参数为空,则URIResolver值将被清除,变压器将不再具有解析器。
resolver
- 实现URIResolver接口的对象,或null。
public abstract URIResolver getURIResolver()
public abstract void setOutputProperties(Properties oformat)
如果此函数的参数为空,则将删除先前设置的任何属性,并将该值还原为在模板对象中定义的值。
将合格的属性密钥名称作为两部分字符串,命名空间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
- 当钥匙无法识别并且没有命名空间限定。
OutputKeys
, Properties
public abstract Properties getOutputProperties()
获取转换的输出属性的副本。
返回的属性应包含用户设置的属性以及样式表设置的属性,并且这些属性由默认属性section 16 of the XSL Transformations (XSLT) W3C Recommendation 指定 。 由用户或样式表专门设置的属性应位于基本属性列表中,而未特别设置的XSLT默认属性应为默认属性列表。 因此,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
不正交 。
OutputKeys
, Properties
, XSL Transformations (XSLT) Version 1.0
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
- 如果该属性不受支持,并且不符合命名空间。
OutputKeys
public abstract String getOutputProperty(String name) throws IllegalArgumentException
获取对变压器有效的输出属性。
如果使用setOutputProperty(java.lang.String, java.lang.String)
设置了一个属性,则返回该值。 否则,如果在样式表中明确指定了一个属性,则返回该值。 如果属性的值已被默认,也就是说,如果没有使用setOutputProperty(java.lang.String, java.lang.String)
或样式表显式设置任何值,结果可能会因实现和输入样式表而异。
name
- 非空字符串,用于指定输出属性名称,可能是命名空间限定的。
IllegalArgumentException
- 如果不支持该属性。
OutputKeys
public abstract void setErrorListener(ErrorListener listener) throws IllegalArgumentException
listener
- 新的错误侦听器。
IllegalArgumentException
- 如果监听器为空。
public abstract ErrorListener getErrorListener()