- java.lang.Object
-
- javax.xml.transform.TransformerFactory
-
- 已知直接子类:
-
SAXTransformerFactory
public abstract class TransformerFactory extends Object
TransformerFactory实例可用于创建
Transformer
和Templates
对象。确定要创建哪个Factory实现的系统属性名为
"javax.xml.transform.TransformerFactory"
。 这个属性命名一个具体的子类的TransformerFactory
抽象类。 如果未定义属性,则使用平台默认值。- 从以下版本开始:
- 1.5
-
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
TransformerFactory()
默认构造函数是有意保护的。
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 Modifier and Type 方法 描述 abstract Source
getAssociatedStylesheet(Source source, String media, String title, String charset)
通过符合给定条件的 xml-stylesheet processing instruction获取与XMLSource
文档关联的样式表规范。abstract Object
getAttribute(String name)
允许用户检索底层实现的特定属性。abstract ErrorListener
getErrorListener()
获取TransformerFactory的错误事件处理程序。abstract boolean
getFeature(String name)
查找功能的值。abstract URIResolver
getURIResolver()
获取在转换过程中默认使用的对象来解析document(),xsl:import或xsl:include中使用的URI。static TransformerFactory
newDefaultInstance()
创建一个TransformerFactory
内建系统默认实现的新实例。static TransformerFactory
newInstance()
获取一个新的实例TransformerFactory
。static TransformerFactory
newInstance(String factoryClassName, ClassLoader classLoader)
从工厂类名称获取一个新的实例TransformerFactory
。abstract Templates
newTemplates(Source source)
将源处理为一个Templates对象,它是源的编译表示。abstract Transformer
newTransformer()
创建一个新的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
s或Template
的功能。abstract void
setURIResolver(URIResolver resolver)
设置在转换期间默认使用的对象,以解析document(),xsl:import或xsl:include中使用的URI。
-
-
-
方法详细信息
-
newDefaultInstance
public static TransformerFactory newDefaultInstance()
创建一个TransformerFactory
内置系统默认实现的新实例。- 结果
-
TransformerFactory
内置系统默认实现的新实例。 - 从以下版本开始:
- 9
-
newInstance
public static TransformerFactory newInstance() throws TransformerFactoryConfigurationError
获取一个新的实例TransformerFactory
。 这个静态方法创建一个新的工厂实例。此方法使用以下有序查找过程来确定要加载的
TransformerFactory
实现类:- 使用
javax.xml.transform.TransformerFactory
系统属性。 使用配置文件“jaxp.properties”。 该文件采用标准
Properties
格式,通常位于Java安装的conf
目录中。 它包含实现类的完全限定名称,其中键是上面定义的系统属性。jaxp.properties文件由JAXP实现只读一次,然后将其值缓存以备将来使用。 如果文件第一次尝试读取文件不存在,则不再进一步检查其存在。 在第一次读取jaxp.properties之后,无法更改任何属性的值。
使用由
ServiceLoader
类定义的服务提供商加载工具尝试使用default loading mechanism查找和加载服务的实现 :服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null,则将使用system class loader 。否则返回system-default实现。
一旦应用程序获得了对这个
TransformerFactory
的引用,就可以使用工厂来配置和获取变压器实例。- 结果
- 新的TransformerFactory实例,从不为null。
- 异常
-
TransformerFactoryConfigurationError
- 在service configuration error的情况下抛出,或者实现不可用或无法实例化。
- 使用
-
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
的上下文classLoader用于加载工厂类。 - 结果
- 新的TransformerFactory实例,从不为null。
- 异常
-
TransformerFactoryConfigurationError
- 如果factoryClassName
是null
,或者工厂类无法加载,实例化。 - 从以下版本开始:
- 1.6
- 另请参见:
-
newInstance()
-
newTransformer
public abstract Transformer newTransformer(Source source) throws TransformerConfigurationException
处理Source
成Transformer
Object
。Source
是符合XSL Transformations (XSLT) Version 1.0的XSLT文档。 必须注意不要同时使用Transformer
多个Thread
。 不同的TransformerFactories
可以同时使用不同的Thread
s。- 参数
-
source
-Source
的XSLT文档用于创建Transformer
。 XML的例子Source
小号包括DOMSource
,SAXSource
,并StreamSource
。 - 结果
-
一个
Transformer
对象,可以用于在单个Thread
执行转换,从不null
。 - 异常
-
TransformerConfigurationException
- 如果在解析Source
时出现错误或无法创建Transformer
实例,则Transformer
。 - 另请参见:
- XSL Transformations (XSLT) Version 1.0
-
newTransformer
public abstract Transformer newTransformer() throws TransformerConfigurationException
创建一个新的Transformer
执行的副本Source
至Result
。 即“ 身份转换 ”。- 结果
- 可用于在单个线程中执行转换的Transformer对象,从不为null。
- 异常
-
TransformerConfigurationException
- 当无法创建Transformer
实例时。
-
newTemplates
public abstract Templates newTemplates(Source source) throws TransformerConfigurationException
将源处理为一个Templates对象,它是源的编译表示。 然后可以在多个线程上同时使用此Templates对象。 创建一个Templates对象允许TransformerFactory对变换指令进行详细的性能优化,而不会影响运行时转换。- 参数
-
source
- 保存URL,输入流等的对象 - 结果
-
一个能够用于转换目的的模板对象,从不
null
。 - 异常
-
TransformerConfigurationException
- 解析构造模板对象失败。
-
getAssociatedStylesheet
public abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) throws TransformerConfigurationException
通过符合给定条件的xml-stylesheet processing instruction获取与XMLSource
文档关联的样式表规范。 请注意,可以返回多个样式表,在这种情况下,它们应用为单个样式表中的导入或级联列表。- 参数
-
source
- XML源文档。 -
media
- 要匹配的媒体属性。 可能为null,在这种情况下,将使用优先模板(即alternate = no)。 -
title
- 要匹配的title属性的值。 可能为null。 -
charset
- 要匹配的字符集属性的值。 可能为null。 - 结果
-
A
Source
Object
适合传递给TransformerFactory
。 - 异常
-
TransformerConfigurationException
-一个异常
是的分析过程中,如果出现错误occurings抛出source
。 - 另请参见:
- Associating Style Sheets with XML documents Version 1.0
-
setURIResolver
public abstract void setURIResolver(URIResolver resolver)
设置在转换期间默认使用的对象,以解析document(),xsl:import或xsl:include中使用的URI。- 参数
-
resolver
- 实现URIResolver接口的对象,或null。
-
getURIResolver
public abstract URIResolver getURIResolver()
获取在转换过程中默认使用的对象来解析document(),xsl:import或xsl:include中使用的URI。- 结果
- 使用setURIResolver设置的URIResolver。
-
setFeature
public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException
设置此工厂创建的
TransformerFactory
和Transformer
s或Template
的功能。功能名称完全合格
URI
秒。 实现可以定义自己的特征。 如果这个TransformerFactory
或其创建的Transformer
或TransformerFactory
或Transformer
s或Template
s不能支持该功能,则抛出一个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
s不能支持此功能。 -
NullPointerException
- 如果name
参数为空。
-
-
getFeature
public abstract boolean getFeature(String name)
查找功能的值。功能名称完全合格
URI
s。 实现可以定义自己的特征。false
返回如果TransformerFactory
或者Transformer
S或Template
的IT创建不支持该功能。TransformerFactory
可以公开特征值,但无法更改其状态。- 参数
-
name
- 功能名称。 - 结果
-
当前状态的功能,
true
或false
。 - 异常
-
NullPointerException
- 如果name
参数为空。
-
setAttribute
public abstract void setAttribute(String name, Object value)
允许用户在底层实现上设置特定属性。 此上下文中的属性被定义为实现提供的选项。 如果底层实现无法识别属性,则抛出一个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
属性指定的协议。 如果由于此属性的限制,在创建新变压器期间访问被拒绝,则newTransformer(Source)
将抛出newTransformer(Source)
方法。通过样式表处理指令访问外部引用集,导入和包含元素仅限于
XMLConstants.ACCESS_EXTERNAL_STYLESHEET
属性指定的协议。 如果由于此属性的限制,在创建新变压器期间访问被拒绝,则newTransformer(Source)
将被抛出newTransformer(Source)
方法。通过XSLT文档功能访问外部文档仅限于属性指定的协议。 如果由于此属性的限制,在转换期间访问被拒绝,则
Transformer.transform(Source, Result)
将被抛出Transformer.transform(Source, Result)
方法。
- 参数
-
name
- 属性的名称。 -
value
- 属性的值。 - 异常
-
IllegalArgumentException
- 当实现不识别属性时。
-
getAttribute
public abstract Object getAttribute(String name)
允许用户检索底层实现的特定属性。 如果底层的实现不能识别属性,则抛出一个IllegalArgumentException
。- 参数
-
name
- 属性的名称。 - 结果
- value属性的值。
- 异常
-
IllegalArgumentException
- 当实现不识别属性时。
-
setErrorListener
public abstract void setErrorListener(ErrorListener listener)
设置TransformerFactory的错误事件侦听器,它用于处理转换指令,而不是转换本身。 一个IllegalArgumentException
如果抛出ErrorListener
监听器是null
。- 参数
-
listener
- 新的错误侦听器。 - 异常
-
IllegalArgumentException
- 当listener
是null
-
getErrorListener
public abstract ErrorListener getErrorListener()
获取TransformerFactory的错误事件处理程序。- 结果
- The current error handler, which should never be null.
-
-