- 直接已知的子类:
-
SAXTransformerFactory
TransformerFactory实例可用于创建Transformer
和Templates
对象。
确定要创建哪个工厂实现的系统属性名为"javax.xml.transform.TransformerFactory"
。此属性命名了TransformerFactory
抽象类的一个具体子类。如果未定义该属性,则将使用平台默认值。
- 自版本:
- 1.5
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract Source
getAssociatedStylesheet
(Source source, String media, String title, String charset) 通过匹配给定条件,获取与XMLSource
文档相关联的样式表规范,通过xml-stylesheet处理指令。abstract Object
getAttribute
(String name) 允许用户检索底层实现上的特定属性。abstract ErrorListener
获取TransformerFactory的错误事件处理程序。abstract boolean
getFeature
(String name) 查找功能的值。abstract URIResolver
获取在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。static TransformerFactory
创建TransformerFactory
内置系统默认实现的新实例。static TransformerFactory
获取TransformerFactory
的新实例。static TransformerFactory
newInstance
(String factoryClassName, ClassLoader classLoader) 从工厂类名获取TransformerFactory
的新实例。abstract Templates
newTemplates
(Source source) 将Source处理为Templates对象,这是源的编译表示。abstract Transformer
创建一个新的Transformer
,执行Source
到Result
的复制,即"身份转换"。abstract Transformer
newTransformer
(Source source) 将Source
处理为Transformer
Object
。abstract void
setAttribute
(String name, Object value) 允许用户在底层实现上设置特定属性。abstract void
setErrorListener
(ErrorListener listener) 为TransformerFactory设置错误事件监听器,用于处理转换指令,而不是转换本身。abstract void
setFeature
(String name, boolean value) 为此TransformerFactory
和由此工厂创建的Transformer
或Template
设置一个功能。abstract void
setURIResolver
(URIResolver resolver) 设置在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。
-
Constructor Details
-
TransformerFactory
protected TransformerFactory()默认构造函数是有意受保护的。
-
-
Method Details
-
newDefaultInstance
创建TransformerFactory
内置系统默认实现的新实例。- 返回:
-
TransformerFactory
内置系统默认实现的新实例。 - 自版本:
- 9
-
newInstance
获取TransformerFactory
的新实例。此方法使用JAXP查找机制来确定要加载的TransformerFactory
实现类。一旦应用程序获得对
TransformerFactory
的引用,就可以使用工厂来配置和获取转换器实例。- 返回:
- 新的TransformerFactory实例,永不为null。
- 抛出:
-
TransformerFactoryConfigurationError
- 在服务配置错误的情况下抛出,或者如果实现不可用或无法实例化。
-
newInstance
public static TransformerFactory newInstance(String factoryClassName, ClassLoader classLoader) throws TransformerFactoryConfigurationError 从工厂类名获取TransformerFactory
的新实例。当类路径中存在多个提供程序时,此函数很有用。它为应用程序提供更多控制,因为可以指定应加载哪个提供程序。一旦应用程序获得对
TransformerFactory
的引用,就可以使用工厂来配置和获取转换器实例。故障排除提示
设置
jaxp.debug
系统属性将导致此方法向System.err
打印大量关于其操作和查找位置的调试消息。如果遇到问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
- 参数:
-
factoryClassName
- 提供javax.xml.transform.TransformerFactory
实现的完全限定工厂类名。 -
classLoader
- 用于加载工厂类的ClassLoader
。如果为null
,则使用当前Thread
的上下文类加载器来加载工厂类。 - 返回:
- 新的TransformerFactory实例,永不为null。
- 抛出:
-
TransformerFactoryConfigurationError
- 如果factoryClassName
为null
,或者无法加载、实例化工厂类。 - 自版本:
- 1.6
- 参见:
-
newTransformer
将Source
处理为Transformer
Object
。Source
是符合XSL Transformations (XSLT) Version 1.0的XSLT文档。必须注意不要在多个并发运行的Thread
中使用此Transformer
。不同的TransformerFactory
可以由不同的Thread
同时使用。- 参数:
-
source
- 用于创建Transformer
的XSLT文档的Source
。XMLSource
的示例包括DOMSource
、SAXSource
和StreamSource
。 - 返回:
-
可用于在单个
Thread
中执行转换的Transformer
对象,永不为null
。 - 抛出:
-
TransformerConfigurationException
- 如果解析Source
时出现错误或无法创建Transformer
实例。 - 参见:
-
newTransformer
创建一个执行Source
到Result
的复制,即"身份转换"的新Transformer
。- 返回:
- 可用于在单个线程中执行转换的Transformer对象,永不为null。
- 抛出:
-
TransformerConfigurationException
- 当无法创建Transformer
实例时。
-
newTemplates
将Source
处理为Templates对象,这是源的编译表示。然后可以跨多个线程同时使用此Templates对象。创建Templates对象允许TransformerFactory对转换指令进行详细的性能优化,而不会影响运行时转换。- 参数:
-
source
- 包含URL、输入流等的对象。 - 返回:
-
用于转换目的的Templates对象,永不为
null
。 - 抛出:
-
TransformerConfigurationException
- 当解析以构造Templates对象失败时抛出。
-
getAssociatedStylesheet
public abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) throws TransformerConfigurationException 通过匹配给定条件,获取与XMLSource
文档相关联的样式表规范,通过xml-stylesheet处理指令。请注意,可能返回多个样式表,此时它们将被视为单个样式表中的导入或级联列表应用。- 参数:
-
source
- XML源文档。 -
media
- 要匹配的媒体属性。可能为null,此时将使用首选样式表(即alternate = no)。 -
title
- 要匹配的title属性的值。可能为null。 -
charset
- 要匹配的charset属性的值。可能为null。 - 返回:
-
适合传递给
TransformerFactory
的Source
Object
。 - 抛出:
-
TransformerConfigurationException
- 如果在解析source
期间发生错误,则抛出异常。 - 参见:
-
setURIResolver
设置一个在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。- 参数:
-
resolver
- 实现URIResolver接口的对象,或null。
-
getURIResolver
获取在转换期间用于解析document()、xsl:import或xsl:include中使用的URI的默认对象。- 返回:
- 使用setURIResolver设置的URIResolver。
-
setFeature
public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException 为此
TransformerFactory
和由此工厂创建的Transformer
或Template
设置一个特性。特性名称是完全限定的
URI
。实现可能定义自己的特性。如果这个TransformerFactory
或它创建的Transformer
或Template
不支持该特性,则会抛出TransformerConfigurationException
。TransformerFactory
可能会公开一个特性值,但无法更改其状态。所有实现都必须支持
XMLConstants.FEATURE_SECURE_PROCESSING
特性。当特性为:true
:实现将限制XML处理以符合实现限制,并按照实现定义的安全方式行事。示例包括解析用户定义的样式表和函数。如果由于安全原因限制了XML处理,将通过调用注册的ErrorListener.fatalError(TransformerException exception)
来报告。请参阅setErrorListener(ErrorListener listener)
。false
:实现将根据XML规范处理XML,而不考虑可能的实现限制。
- 参数:
-
name
- 特性名称。 -
value
- 特性状态为true
或false
。 - 抛出:
-
TransformerConfigurationException
- 如果这个TransformerFactory
或它创建的Transformer
或Template
不支持该特性。 -
NullPointerException
- 如果name
参数为null。
-
getFeature
查找特性的值。特性名称是完全限定的
URI
。实现可能定义自己的特性。如果这个TransformerFactory
或它创建的Transformer
或Template
不支持该特性,则返回false
。TransformerFactory
可能会公开一个特性值,但无法更改其状态。- 参数:
-
name
- 特性名称。 - 返回:
-
特性的当前状态,为
true
或false
。 - 抛出:
-
NullPointerException
- 如果name
参数为null。
-
setAttribute
允许用户在底层实现上设置特定属性。在此上下文中,属性被定义为实现提供的选项。如果底层实现不识别属性,则会抛出IllegalArgumentException
。所有实现实现JAXP 1.5或更新版本都必须支持
XMLConstants.ACCESS_EXTERNAL_DTD
和XMLConstants.ACCESS_EXTERNAL_STYLESHEET
属性。-
在源文件中对外部DTD的访问受到
XMLConstants.ACCESS_EXTERNAL_DTD
属性指定的协议的限制。如果由于此属性的限制而在转换期间拒绝访问,则TransformerException
将由Transformer.transform(Source, Result)
抛出。在样式表中对外部DTD的访问受
XMLConstants.ACCESS_EXTERNAL_DTD
属性指定的协议的限制。如果由于此属性的限制而在创建新转换器期间拒绝访问,则TransformerConfigurationException
将由newTransformer(Source)
方法抛出。由样式表处理指令、导入和包含元素设置的外部引用的访问受
XMLConstants.ACCESS_EXTERNAL_STYLESHEET
属性指定的协议的限制。如果由于此属性的限制而在创建新转换器期间拒绝访问,则TransformerConfigurationException
将由newTransformer(Source)
方法抛出。通过XSLT文档函数访问外部文档受属性指定的协议的限制。如果由于此属性的限制而在转换期间拒绝访问,则
TransformerException
将由Transformer.transform(Source, Result)
方法抛出。
- 参数:
-
name
- 属性的名称。 -
value
- 属性的值。 - 抛出:
-
IllegalArgumentException
- 当实现不识别属性时。
-
-
getAttribute
允许用户在底层实现上检索特定属性。如果底层实现不识别属性,则会抛出IllegalArgumentException
。- 参数:
-
name
- 属性的名称。 - 返回:
- 值 属性的值。
- 抛出:
-
IllegalArgumentException
- 当实现不识别属性时。
-
setErrorListener
为TransformerFactory设置错误事件监听器,用于处理转换指令,而不是转换本身。如果ErrorListener
监听器为null
,则会抛出IllegalArgumentException
。- 参数:
-
listener
- 新的错误监听器。 - 抛出:
-
IllegalArgumentException
- 当listener
为null
时。
-
getErrorListener
获取TransformerFactory的错误事件处理程序。- 返回:
- 当前的错误处理程序,永远不应为null。
-