模块 java.xml

类 XMLOutputFactory

java.lang.Object
javax.xml.stream.XMLOutputFactory

public abstract class XMLOutputFactory extends Object
定义用于获取 XMLEventWriters 和 XMLStreamWriters 的工厂的抽象实现。下表定义了本规范的标准属性。每个属性在每个实现所需的支持级别上有所不同。所需的支持级别在“必需”列中进行了描述。
配置参数
属性名称 行为 返回类型 默认值 必需的
javax.xml.stream.isRepairingNamespaces 输出端的默认前缀 Boolean 错误的 是的

以下段落描述了命名空间和前缀修复算法:

可以使用以下代码行设置该属性:setProperty("javax.xml.stream.isRepairingNamespaces", Boolean.TRUE);

此属性指定编写器默认命名空间前缀声明。默认值为假。

如果 writer isRepairingNamespaces 它将在当前 StartElement 上为范围内当前没有命名空间声明的任何属性创建命名空间声明。如果 StartElement 有一个 uri 但没有指定前缀,则将分配一个前缀,如果该前缀尚未在当前 StartElement 的父级中声明,则它将在当前 StartElement 上声明。如果 defaultNamespace 已绑定并且在范围内并且默认命名空间与属性的 URI 或 StartElement QName 匹配,则不会分配任何前缀。

如果元素或属性名称有前缀,但未绑定到任何名称空间 URI,则前缀将在序列化期间删除。

如果同一开始或空元素标记中的元素和/或属性名称绑定到不同的名称空间 URI 并使用相同的前缀,则元素或第一个出现的属性保留原始前缀,并且后续属性的前缀替换为绑定到这些属性的名称空间 URI 的新前缀。

如果元素或属性名称使用的前缀绑定到与从该元素的父元素的名称空间上下文继承的 URI 不同的 URI,并且当前元素的上下文中没有名称空间声明,则添加这样的名称空间声明。

如果元素或属性名称绑定到前缀,并且存在将该前缀绑定到不同 URI 的命名空间声明,那么如果从该元素的父上下文继承了正确的映射,则该命名空间声明将被删除,或者更改为使用该前缀的元素或属性的名称空间 URI。

自从:
1.6
参见:
  • 字段详细信息

    • IS_REPAIRING_NAMESPACES

      public static final String  IS_REPAIRING_NAMESPACES
      用于在输出端设置前缀默认值的属性
      参见:
  • 构造方法详细信息

    • XMLOutputFactory

      protected XMLOutputFactory()
      受保护的构造函数以防止实例化。请改用 newFactory()
  • 方法详情

    • newDefaultFactory

      public static XMLOutputFactory  newDefaultFactory()
      创建 XMLOutputFactory 内置系统默认实现的新实例。
      返回:
      XMLOutputFactory 内置系统默认实现的新实例。
      自从:
      9
    • newInstance

      public static XMLOutputFactory  newInstance() throws FactoryConfigurationError
      以与 newFactory() 方法完全相同的方式创建工厂的新实例。
      返回:
      XMLOutputFactory 的实例
      抛出:
      FactoryConfigurationError - 如果无法加载此工厂的实例
    • newFactory

      public static XMLOutputFactory  newFactory() throws FactoryConfigurationError
      创建工厂的新实例。此方法使用 JAXP 查找机制 来确定要加载的 XMLOutputFactory 实现类。

      一旦应用程序获得了对 XMLOutputFactory 的引用,它就可以使用工厂来配置和获取流实例。

      返回:
      XMLOutputFactory 的实例
      抛出:
      FactoryConfigurationError - 在 服务配置错误 的情况下,或者如果实现不可用或无法实例化。
    • 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 - 要使用的类加载器
      返回:
      工厂实现
      抛出:
      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 类定义的服务提供商加载工具,尝试使用指定的 ClassLoader 定位并加载 实现服务。如果 classLoader 为空,则 默认加载机制 将适用:也就是说,服务提供商加载工具将使用 当前线程的上下文类加载器 尝试加载服务。如果上下文类加载器为 null,则将使用 系统类加载器

      • 否则,抛出一个 FactoryConfigurationError

      API 注意:
      此处定义的参数 factoryId 与其他 JAXP 工厂的参数不一致,其中第一个参数是提供工厂实现的完全限定工厂类名。

      请注意,这是一种替代已弃用的 newInstance(String factoryId, ClassLoader classLoader) 方法的新方法。原始方法被错误地定义为返回 XMLInputFactory。

      参数:
      factoryId - 要查找的工厂名称,与属性名称相同
      classLoader - 要使用的类加载器
      返回:
      工厂实现
      抛出:
      FactoryConfigurationError - 在 服务配置错误 的情况下,或者如果实现不可用或无法实例化。
    • createXMLStreamWriter

      public abstract XMLStreamWriter  createXMLStreamWriter(Writer  stream) throws XMLStreamException
      创建一个写入写入器的新 XMLStreamWriter
      参数:
      stream - 要写入的作者
      返回:
      XMLStreamWriter 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamWriter

      public abstract XMLStreamWriter  createXMLStreamWriter(OutputStream  stream) throws XMLStreamException
      创建一个写入流的新 XMLStreamWriter
      参数:
      stream - 要写入的流
      返回:
      XMLStreamWriter 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamWriter

      public abstract XMLStreamWriter  createXMLStreamWriter(OutputStream  stream, String  encoding) throws XMLStreamException
      创建一个写入流的新 XMLStreamWriter
      参数:
      stream - 要写入的流
      encoding - 使用的编码
      返回:
      XMLStreamWriter 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamWriter

      public abstract XMLStreamWriter  createXMLStreamWriter(Result  result) throws XMLStreamException
      创建一个写入 JAXP 结果的新 XMLStreamWriter。此方法是可选的。
      参数:
      result - 要写入的结果
      返回:
      XMLStreamWriter 的实例
      抛出:
      UnsupportedOperationException - 如果此 XMLOutputFactory 不支持此方法
      XMLStreamException - 如果发生错误
    • createXMLEventWriter

      public abstract XMLEventWriter  createXMLEventWriter(Result  result) throws XMLStreamException
      创建一个写入 JAXP 结果的新 XMLEventWriter。此方法是可选的。
      参数:
      result - 要写入的结果
      返回:
      XMLEventWriter 的实例
      抛出:
      UnsupportedOperationException - 如果此 XMLOutputFactory 不支持此方法
      XMLStreamException - 如果发生错误
    • createXMLEventWriter

      public abstract XMLEventWriter  createXMLEventWriter(OutputStream  stream) throws XMLStreamException
      创建一个写入流的新 XMLEventWriter
      参数:
      stream - 要写入的流
      返回:
      XMLEventWriter 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventWriter

      public abstract XMLEventWriter  createXMLEventWriter(OutputStream  stream, String  encoding) throws XMLStreamException
      创建一个写入流的新 XMLEventWriter
      参数:
      stream - 要写入的流
      encoding - 使用的编码
      返回:
      XMLEventWriter 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventWriter

      public abstract XMLEventWriter  createXMLEventWriter(Writer  stream) throws XMLStreamException
      创建一个写入写入器的新 XMLEventWriter
      参数:
      stream - 要写入的流
      返回:
      XMLEventWriter 的实例
      抛出:
      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