public abstract class TransformerFactory extends Object
TransformerFactory实例可用于创建Transformer
和Templates
对象。
确定要创建哪个Factory实现的系统属性命名为"javax.xml.transform.TransformerFactory"
。 该属性命名为TransformerFactory
抽象类的具体子类。 如果未定义属性,则使用平台默认值。
Modifier | Constructor and Description |
---|---|
protected |
TransformerFactory()
默认构造函数是有意保护的。
|
Modifier and Type | Method and Description |
---|---|
abstract Source |
getAssociatedStylesheet(Source source, String media, String title, String charset)
|
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 |
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。
|
public static TransformerFactory newInstance() throws TransformerFactoryConfigurationError
获得一个新的TransformerFactory
实例。 这个静态方法创建一个新的工厂实例。
此方法使用以下有序查找过程来确定要加载的TransformerFactory
实现类:
javax.xml.transform.TransformerFactory
系统属性。 java.util.Properties
格式,包含实现类的完全限定名称,其中键为上面定义的系统属性。 ServiceLoader
类定义的服务提供商加载工具,使用default loading mechanism尝试定位和加载服务的实现 :服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null, 那么将使用system class loader 。 一旦应用程序获得了对TransformerFactory的TransformerFactory
就可以使用工厂来配置和获取变压器实例。
TransformerFactoryConfigurationError
-抛出的情况下service configuration error或者如果实现不可用或不能被实例化。
public static TransformerFactory newInstance(String factoryClassName, ClassLoader classLoader) throws TransformerFactoryConfigurationError
从工厂类名称获取一个新的实例TransformerFactory
。 在类路径中有多个提供程序时,此功能很有用。 它可以更好地控制应用程序,因为它可以指定应该加载哪个提供程序。
一旦应用程序获得了对TransformerFactory的TransformerFactory
就可以使用工厂来配置和获取变压器实例。
设置jaxp.debug
系统属性将导致此方法打印大量调试消息到System.err
有关它在做什么和它在哪里看。
如果您有问题,请尝试:
java -Djaxp.debug=1 YourProgram ....
factoryClassName
-完全限定工厂类名称,提供实施
javax.xml.transform.TransformerFactory
。
classLoader
- ClassLoader
用于加载工厂类。
如果null
当前的Thread
的上下文classLoader用于加载工厂类。
TransformerFactoryConfigurationError
- 如果
factoryClassName
是
null
,或工厂类无法加载,实例化。
newInstance()
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
中执行
Thread
,从不
null
。
TransformerConfigurationException
- 如果在解析
Source
时出现错误或者无法创建
Transformer
实例,则
Transformer
。
public abstract Transformer newTransformer() throws TransformerConfigurationException
创建一个新的Transformer
,执行Source
的Result
。 即“ 身份转换 ”。
TransformerConfigurationException
- 当无法创建
Transformer
实例时。
public abstract Templates newTemplates(Source source) throws TransformerConfigurationException
source
- 保存URL,输入流等的对象
null
。
TransformerConfigurationException
- 解析构造Templates对象失败。
public abstract Source getAssociatedStylesheet(Source source, String media, String title, String charset) throws TransformerConfigurationException
通过符合给定条件的xml-stylesheet processing instruction获取与XML Source
文档相关联的样式Source
规范。 请注意,可以返回多个样式表,在这种情况下,它们应用为单个样式表中的导入或级联列表。
source
- XML源文档。
media
- 要匹配的媒体属性。
可能为null,在这种情况下,将使用优先模板(即alternate = no)。
title
- 要匹配的title属性的值。
可能为null。
charset
- 要匹配的字符集属性的值。
可能为null。
Source
Object
适合传递给
TransformerFactory
。
TransformerConfigurationException
-一个
异常
是的分析过程中,如果出现错误occurings抛出
source
。
public abstract void setURIResolver(URIResolver resolver)
resolver
- 实现URIResolver接口的对象,或null。
public abstract URIResolver getURIResolver()
public abstract void setFeature(String name, boolean value) throws TransformerConfigurationException
为这个工厂创建的TransformerFactory
和Transformer
s或Template
设置了一个功能。
功能名称完全符合URI
s。 实现可以定义自己的特征。 如果这个TransformerFactory
或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
s或
Template
它创建不能支持此功能。
NullPointerException
- 如果
name
参数为空。
public abstract boolean getFeature(String name)
功能名称完全符合URI
s。 实现可以定义自己的特征。 false
返回如果这TransformerFactory
或Transformer
S或Template
的IT创建不支持该功能。 TransformerFactory
可以公开特征值,但无法更改其状态。
name
- 功能名称。
true
或
false
。
NullPointerException
- 如果
name
参数为空。
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
属性指定的协议 。 如果由于此属性的限制,在创建新变压器期间访问被拒绝, TransformerConfigurationException
将被抛出newTransformer(Source)
方法。
通过样式表处理指令访问外部引用集,导入和包含元素仅限于XMLConstants.ACCESS_EXTERNAL_STYLESHEET
属性指定的协议 。 如果由于此属性的限制,在创建新变压器期间访问被拒绝, TransformerConfigurationException
将被newTransformer(Source)
方法抛出。
通过XSLT文档功能访问外部文档仅限于属性指定的协议。 如果由于此属性的限制,在转换期间访问被拒绝, TransformerException
将被抛出Transformer.transform(Source, Result)
方法。
name
- 属性的名称。
value
- 属性的值。
IllegalArgumentException
- 实现时不识别属性。
public abstract Object getAttribute(String name)
IllegalArgumentException
如果底层实现不识别该属性,则抛出。
name
- 属性的名称。
IllegalArgumentException
- 当实现不识别属性时。
public abstract void setErrorListener(ErrorListener listener)
IllegalArgumentException
如果抛出ErrorListener
监听器是null
。
listener
- 新的错误侦听器。
IllegalArgumentException
-
listener
为
null
public abstract ErrorListener getErrorListener()