- java.lang.Object
-
- javax.xml.stream.XMLOutputFactory
-
public abstract class XMLOutputFactory extends Object
定义用于获取XMLEventWriters和XMLStreamWrit的工厂的抽象实现。 下表定义了本规范的标准属性。 每个财产的每个实施所需的支持水平各不相同。 所需的支持级别在“必需”列中描述。 Configuration Parameters Property Name Behavior Return type Default Value Required javax.xml.stream.isRepairingNamespaces defaults prefixes on the output side Boolean False Yes以下段落描述了命名空间和前缀修复算法:
该属性可以用以下代码行设置:
setProperty("javax.xml.stream.isRepairingNamespaces", new Boolean(true|false));
该属性指定作者默认命名空间前缀声明。 默认值为false。
如果作者是ReepairingNamespaces,它将为当前的StartElement创建一个名称空间声明,该属性当前不具有范围内的命名空间声明。 如果StartElement具有uri但未指定前缀,则将分配前缀,如果前缀尚未在当前StartElement的父项中声明,则它将在当前StartElement上声明。 如果defaultNamespace被绑定并在范围内,并且默认命名空间与属性的URI或StartElement QName匹配,则不会分配前缀。
如果元素或属性名称具有前缀但未绑定到任何命名空间URI,则在序列化期间前缀将被删除。
如果同一起始或空元素标签中的元素和/或属性名称绑定到不同的命名空间URI并且使用相同的前缀,则元素或第一个发生属性保留原始前缀,并且以下属性的前缀被替换为绑定到这些属性的命名空间URI的新前缀。
如果元素或属性名称使用绑定到与该元素的父元素的命名空间上下文不同的URI的前缀,并且在当前元素的上下文中没有命名空间声明,则会添加这样的命名空间声明。
如果元素或属性名称绑定到前缀,并且有一个命名空间声明将该前缀绑定到不同的URI,那么如果正确的映射从该元素的父上下文继承,则该名称空间声明被删除,或者更改为使用该前缀的元素或属性的命名空间URI。
- 从以下版本开始:
- 1.6
- Version:
- 1.2
- 另请参见:
-
XMLInputFactory
,XMLEventWriter
,XMLStreamWriter
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
IS_REPAIRING_NAMESPACES
用于在输出端设置前缀默认值的属性
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
XMLOutputFactory()
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 abstract XMLEventWriter
createXMLEventWriter(OutputStream stream)
创建一个写入流的新XMLEventWriterabstract XMLEventWriter
createXMLEventWriter(OutputStream stream, String encoding)
创建一个写入流的新XMLEventWriterabstract XMLEventWriter
createXMLEventWriter(Writer stream)
创建一个写入作者的新的XMLEventWriterabstract XMLEventWriter
createXMLEventWriter(Result result)
创建一个写入JAXP结果的新的XMLEventWriter。abstract XMLStreamWriter
createXMLStreamWriter(OutputStream stream)
创建一个写入流的新XMLStreamWriterabstract XMLStreamWriter
createXMLStreamWriter(OutputStream stream, String encoding)
创建一个写入流的新XMLStreamWriterabstract XMLStreamWriter
createXMLStreamWriter(Writer stream)
创建一个写入作者的新XMLStreamWriterabstract XMLStreamWriter
createXMLStreamWriter(Result result)
创建一个写入JAXP结果的新XMLStreamWriter。abstract Object
getProperty(String name)
获取底层实现的功能/属性abstract boolean
isPropertySupported(String name)
查询此工厂支持的属性集。static XMLOutputFactory
newDefaultFactory()
创建一个新的XMLOutputFactory
内置系统默认实现实例。static XMLOutputFactory
newFactory()
创建一个新的工厂实例。static XMLOutputFactory
newFactory(String factoryId, ClassLoader classLoader)
创建一个新的工厂实例。static XMLOutputFactory
newInstance()
按照与newFactory()
方法完全相同的方式创建工厂的新实例。static XMLInputFactory
newInstance(String factoryId, ClassLoader classLoader)
已过时。此方法已被弃用,因为它返回一个XMLInputFactory的实例,该实例是错误的类。 改用新的方法newFactory(java.lang.String, java.lang.ClassLoader)
。abstract void
setProperty(String name, Object value)
允许用户在底层实现上设置特定的功能/属性。
-
-
-
字段详细信息
-
IS_REPAIRING_NAMESPACES
public static final String IS_REPAIRING_NAMESPACES
用于在输出端设置前缀默认值的属性- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
newDefaultFactory
public static XMLOutputFactory newDefaultFactory()
创建一个XMLOutputFactory
内置系统默认实现的新实例。- 结果
-
XMLOutputFactory
内建系统默认实现的新实例。 - 从以下版本开始:
- 9
-
newInstance
public static XMLOutputFactory newInstance() throws FactoryConfigurationError
创建一个新的工厂实例,与newFactory()
方法完全相同。- 异常
-
FactoryConfigurationError
- 如果此工厂的实例无法加载
-
newFactory
public static XMLOutputFactory newFactory() throws FactoryConfigurationError
创建一个新的工厂实例。这个静态方法创建一个新的工厂实例。 此方法使用以下有序查找过程来确定要加载的XMLOutputFactory实现类:
- 使用javax.xml.stream.XMLOutputFactory系统属性。
使用配置文件“stax.properties”。 该文件采用标准
Properties
格式,通常位于Java安装的conf
目录中。 它包含实现类的完全限定名称,其中键是上面定义的系统属性。stax.properties文件只能在实现中读取一次,然后将其值缓存以备将来使用。 如果文件第一次尝试读取文件不存在,则不再进一步检查其存在。 在第一次读取stax.properties之后,不可能更改任何属性的值。
使用jaxp配置文件“jaxp.properties”。 该文件的格式与stax.properties格式相同,只有在stax.properties不存在的情况下才会被读取。
使用由
ServiceLoader
类定义的服务提供商加载工具尝试使用default loading mechanism查找和加载服务的实现 :服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null, 那么将使用system class loader 。否则,将返回system-default实现。
一旦应用程序获得了对XMLOutputFactory的引用,它可以使用工厂来配置和获取流实例。
请注意,这是一种替代不推荐使用的newInstance()方法的新方法。 相对于不推荐使用的方法,此替换方法没有定义行为更改。
- 异常
-
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。
-
newInstance
@Deprecated(since="1.7") public static XMLInputFactory newInstance(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError
已过时。 此方法已被弃用,因为它返回一个XMLInputFactory的实例,该实例是错误的类。 改用新方法newFactory(java.lang.String, java.lang.ClassLoader)
。创建一个新的工厂实例。- 参数
-
factoryId
- 要查找的工厂名称,与属性名称相同 -
classLoader
- classLoader使用 - 结果
- 工厂实施
- 异常
-
FactoryConfigurationError
- 如果此工厂的实例无法加载
-
newFactory
public static XMLOutputFactory newFactory(String factoryId, ClassLoader classLoader) throws FactoryConfigurationError
创建一个新的工厂实例。 如果classLoader参数为空,则使用ContextClassLoader。此方法使用以下有序查找过程来确定要加载的XMLOutputFactory实现类:
- 使用由
factoryId
标识的系统属性的值。 使用配置文件“stax.properties”。 该文件采用标准
Properties
格式,通常位于Java安装的conf
目录中。 它包含实现类的完全限定名称,其中键是上面定义的系统属性。stax.properties文件只能在实现中读取一次,然后将其值缓存以备将来使用。 如果文件第一次尝试读取文件不存在,则不再进一步检查其存在。 在第一次读取stax.properties之后,不可能更改任何属性的值。
使用jaxp配置文件“jaxp.properties”。 该文件的格式与stax.properties格式相同,只有在stax.properties不存在的情况下才会被读取。
如果
factoryId
是“javax.xml.stream.XMLOutputFactory”,使用服务提供商装载设施,由定义ServiceLoader
类,试图locate and load使用指定的服务的实现ClassLoader
。 如果classLoader
为空,则将使用default loading mechanism :即,服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null, 那么将使用system class loader 。否则,抛出一个
FactoryConfigurationError
。
- API Note:
-
这里定义的参数factoryId与其他JAXP工厂的参数factoryId不一致,其中第一个参数是提供工厂实现的完全限定的工厂类名称。
请注意,这是一种替代已弃用的
newInstance(String factoryId, ClassLoader classLoader)
方法的新方法。 原始方法被错误地定义为返回XMLInputFactory。 - 参数
-
factoryId
- 要查找的工厂名称,与属性名称相同 -
classLoader
- classLoader使用 - 结果
- 工厂实施
- 异常
-
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。
- 使用由
-
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(Writer stream) throws XMLStreamException
创建一个写入作者的新XMLStreamWriter- 参数
-
stream
- 写作者写的 - 异常
-
XMLStreamException
-
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(OutputStream stream) throws XMLStreamException
创建一个写入流的新XMLStreamWriter- 参数
-
stream
- 要写入的流 - 异常
-
XMLStreamException
-
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(OutputStream stream, String encoding) throws XMLStreamException
创建一个写入流的新XMLStreamWriter- 参数
-
stream
- 要写入的流 -
encoding
- 要使用的编码 - 异常
-
XMLStreamException
-
createXMLStreamWriter
public abstract XMLStreamWriter createXMLStreamWriter(Result result) throws XMLStreamException
创建一个写入JAXP结果的新XMLStreamWriter。 此方法是可选的。- 参数
-
result
- 写的结果 - 异常
-
UnsupportedOperationException
- 如果此XMLOutputFactory不支持此方法 -
XMLStreamException
-
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(Result result) throws XMLStreamException
创建一个写入JAXP结果的新的XMLEventWriter。 此方法是可选的。- 参数
-
result
- 要写的结果 - 异常
-
UnsupportedOperationException
- 如果此XMLOutputFactory不支持此方法 -
XMLStreamException
-
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(OutputStream stream) throws XMLStreamException
创建一个写入流的新XMLEventWriter- 参数
-
stream
- 要写入的流 - 异常
-
XMLStreamException
-
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(OutputStream stream, String encoding) throws XMLStreamException
创建一个写入流的新XMLEventWriter- 参数
-
stream
- 要写的流 -
encoding
- 要使用的编码 - 异常
-
XMLStreamException
-
createXMLEventWriter
public abstract XMLEventWriter createXMLEventWriter(Writer stream) throws XMLStreamException
创建一个写入作者的新的XMLEventWriter- 参数
-
stream
- 要写入的流 - 异常
-
XMLStreamException
-
setProperty
public abstract void setProperty(String name, Object value) throws IllegalArgumentException
允许用户在底层实现上设置特定的功能/属性。- 参数
-
name
- 属性的名称 -
value
- 属性的值 - 异常
-
IllegalArgumentException
- 如果不支持该属性
-
getProperty
public abstract Object getProperty(String name) throws IllegalArgumentException
获取底层实现的功能/属性- 参数
-
name
- 财产的名称 - 结果
- 物业的价值
- 异常
-
IllegalArgumentException
- 如果不支持该属性
-
isPropertySupported
public abstract boolean isPropertySupported(String name)
查询此工厂支持的属性集。- 参数
-
name
- 属性的名称(可能不为空) - 结果
- 如果属性被支持,则为true,否则为false
-
-