- 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
-
-
构造方法摘要
构造方法 变量 构造器 描述 protected
TransformerFactory()
默认构造函数是故意保护的。
-
方法摘要
所有方法 静态方法 实例方法 抽象方法 具体的方法 变量和类型 方法 描述 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)
将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文档。 必须注意不要在同时运行的多个Thread
使用此Transformer
。 不同的TransformerFactories
可以由不同的Thread
同时使用。- 参数
-
source
-Source
用于创建Transformer
的XSLT文档。 XML的例子Source
小号包括DOMSource
,SAXSource
和StreamSource
。 - 结果
-
Transformer
对象,可用于在单个Thread
执行转换,从不使用null
。 - 异常
-
TransformerConfigurationException
- 如果在解析Source
时出现错误或者无法创建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
将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
通过符合给定条件的xml-stylesheet processing instruction获取与XMLSource
文档关联的样式表规范。 请注意,可以返回多个样式表,在这种情况下,它们就像应用于单个样式表中的导入列表或级联一样。- 参数
-
source
- XML源文档。 -
media
- 要匹配的媒体属性。 可以为null,在这种情况下将使用首选模板(即alternate = no)。 -
title
- 要匹配的title属性的值。 可能为空。 -
charset
- 要匹配的charset属性的值。 可能为空。 - 结果
-
甲
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
s。 实现可以定义自己的功能。 一个TransformerConfigurationException
如果这是抛出TransformerFactory
或Transformer
S或Template
的IT创建不支持该功能。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
s或Template
s不能支持此功能。 -
NullPointerException
- 如果name
参数为null。
-
-
getFeature
public abstract boolean getFeature(String name)
查找功能的值。功能名称完全合格
URI
s。 实现可以定义自己的功能。false
返回如果这TransformerFactory
或Transformer
S或Template
的IT创建不支持该功能。TransformerFactory
可能会公开特征值但无法更改其状态。- 参数
-
name
- 功能名称。 - 结果
-
该功能的当前状态,
true
或false
。 - 异常
-
NullPointerException
- 如果name
参数为null。
-
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
属性指定的协议。 如果由于此属性的限制而在转换期间拒绝访问,则Transformer.transform(Source, Result)
将抛出TransformerException
。样式表中对外部DTD的访问仅限于
XMLConstants.ACCESS_EXTERNAL_DTD
属性指定的协议。 如果访问被创建一个新的变压器的过程中,由于该物业的限制否认,TransformerConfigurationException
将被抛出newTransformer(Source)
方法。通过样式表处理指令设置对外部引用的访问,Import和Include元素仅限于
XMLConstants.ACCESS_EXTERNAL_STYLESHEET
属性指定的协议。 如果访问被创建一个新的变压器的过程中,由于该物业的限制否认,TransformerConfigurationException
将被抛出newTransformer(Source)
方法。通过XSLT文档功能访问外部文档仅限于属性指定的协议。 如果访问被改造过程中,由于该物业的限制否认,
TransformerException
将被抛出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.
-
-