模块 java.xml

类 XMLInputFactory

java.lang.Object
javax.xml.stream.XMLInputFactory

public abstract class XMLInputFactory extends Object
定义用于获取流的工厂的抽象实现。下表定义了本规范的标准属性。每个属性在每个实现所需的支持级别上有所不同。所需的支持级别在“必需”列中进行了描述。
配置参数
属性名称 行为 返回类型 默认值 必需的
javax.xml.stream.isValidating 打开/关闭特定于实现的 DTD 验证 Boolean 错误的
javax.xml.stream.isNamespaceAware 打开/关闭 XML 1.0 支持的名称空间处理 Boolean 真的 真(必选)/假(可选)
javax.xml.stream.isCoalescing 要求处理器合并相邻的字符数据 Boolean 错误的 是的
javax.xml.stream.isReplacingEntityReferences 用替换文本替换内部实体引用并将它们报告为字符 Boolean 真的 是的
javax.xml.stream.isSupportingExternalEntities 解析外部解析的实体 Boolean 未指定 是的
javax.xml.stream.supportDTD 使用此属性请求不支持 DTD 的处理器 Boolean 真的 是的
javax.xml.stream.reporter 设置/获取 XMLReporter 的实现 javax.xml.stream.XMLReporter 无效的 是的
javax.xml.stream.resolver 设置/获取 XMLResolver 接口的实现 javax.xml.stream.XMLResolver 无效的 是的
javax.xml.stream.allocator 设置/获取 XMLEventAllocator 接口的实现 javax.xml.stream.util.XMLEventAllocator 无效的 是的
自从:
1.6
参见:
  • 字段详细信息

    • IS_NAMESPACE_AWARE

      public static final String  IS_NAMESPACE_AWARE
      用于开启/关闭命名空间支持的属性,这是为了支持XML 1.0文档,只有true设置必须支持
      参见:
    • IS_VALIDATING

      public static final String  IS_VALIDATING
      用于打开/关闭特定于实现的验证的属性
      参见:
    • IS_COALESCING

      public static final String  IS_COALESCING
      要求解析器合并相邻字符数据部分的属性
      参见:
    • IS_REPLACING_ENTITY_REFERENCES

      public static final String  IS_REPLACING_ENTITY_REFERENCES
      要求解析器用它们的替换文本替换内部实体引用并将它们报告为字符
      参见:
    • IS_SUPPORTING_EXTERNAL_ENTITIES

      public static final String  IS_SUPPORTING_EXTERNAL_ENTITIES
      需要解析器解析外部解析实体的属性
      参见:
    • SUPPORT_DTD

      public static final String  SUPPORT_DTD
      要求解析器支持 DTD 的属性
      参见:
    • REPORTER

      public static final String  REPORTER
      用于设置/获取 XMLReporter 接口实现的属性
      参见:
    • RESOLVER

      public static final String  RESOLVER
      用于设置/获取 XMLResolver 实现的属性
      参见:
    • ALLOCATOR

      public static final String  ALLOCATOR
      用于设置/获取分配器实现的属性
      参见:
  • 构造方法详细信息

    • XMLInputFactory

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

    • newDefaultFactory

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

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

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

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

      返回:
      XMLInputFactory 的实例
      抛出:
      FactoryConfigurationError - 在 服务配置错误 的情况下,或者如果实现不可用或无法实例化。
    • newInstance

      @Deprecated (since ="1.7") public static XMLInputFactory  newInstance(String  factoryId, ClassLoader  classLoader) throws FactoryConfigurationError
      已弃用。
      此方法已被弃用以保持 API 一致性。所有 newInstance 方法都已替换为相应的 newFactory 方法。替换 newFactory(java.lang.String, java.lang.ClassLoader) 方法没有定义任何行为变化。
      创建工厂的新实例。
      参数:
      factoryId - 要查找的工厂名称,与属性名称相同
      classLoader - 要使用的类加载器
      返回:
      工厂实现
      抛出:
      FactoryConfigurationError - 如果无法加载此工厂的实例
    • newFactory

      public static XMLInputFactory  newFactory(String  factoryId, ClassLoader  classLoader) throws FactoryConfigurationError
      创建工厂的新实例。如果 classLoader 参数为空,则使用 ContextClassLoader。

      此方法使用以下有序查找过程来确定要加载的 XMLInputFactory 实现类:

      • 使用 factoryId 标识的系统属性的值。

      • 使用配置文件“stax.properties”。该文件采用标准 Properties 格式,通常位于 Java 安装的 conf 目录中。它包含实现类的完全限定名称,键是上面定义的系统属性。

        stax.properties 文件仅由实现读取一次,然后缓存其值以备将来使用。如果在第一次尝试读取文件时该文件不存在,则不会进一步尝试检查其是否存在。第一次读取 stax.properties 中的任何属性后,就无法更改其值。

        使用 jaxp 配置文件“jaxp.properties”。该文件的格式与 stax.properties 相同,只有在 stax.properties 不存在时才会被读取。

      • 如果 factoryId 是“javax.xml.stream.XMLInputFactory”,则使用由 ServiceLoader 类定义的服务提供商加载工具,尝试使用指定的 ClassLoader 定位并加载 实现服务。如果 classLoader 为空,则 默认加载机制 将适用:也就是说,服务提供商加载工具将使用 当前线程的上下文类加载器 尝试加载服务。如果上下文类加载器为 null,则将使用 系统类加载器

      • 否则,抛出一个 FactoryConfigurationError

      请注意,这是一种替代已弃用的 newInstance(String factoryId, ClassLoader classLoader) 方法的新方法。相对于已弃用的方法,此替换方法未定义任何行为更改。

      API 注意:
      此处定义的参数 factoryId 与其他 JAXP 工厂的参数不一致,其中第一个参数是提供工厂实现的完全限定工厂类名。
      参数:
      factoryId - 要查找的工厂名称,与属性名称相同
      classLoader - 要使用的类加载器
      返回:
      工厂实现
      抛出:
      FactoryConfigurationError - 在 服务配置错误 的情况下,或者如果实现不可用或无法实例化。
      FactoryConfigurationError - 如果无法加载此工厂的实例
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(Reader  reader) throws XMLStreamException
      从阅读器创建一个新的 XMLStreamReader。
      参数:
      reader - 要读取的 XML 数据
      返回:
      XMLStreamReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(Source  source) throws XMLStreamException
      从 JAXP 源创建一个新的 XMLStreamReader。此方法是可选的。
      参数:
      source - 要读取的来源
      返回:
      XMLStreamReader 的实例
      抛出:
      UnsupportedOperationException - 如果此 XMLInputFactory 不支持此方法
      XMLStreamException - 如果发生错误
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(InputStream  stream) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLStreamReader。
      参数:
      stream - 要读取的 InputStream
      返回:
      XMLStreamReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(InputStream  stream, String  encoding) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLStreamReader。
      参数:
      stream - 要读取的 InputStream
      encoding - 流的字符编码
      返回:
      XMLStreamReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(String  systemId, InputStream  stream) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLStreamReader。
      参数:
      systemId - 流的系统 ID
      stream - 要读取的 InputStream
      返回:
      XMLStreamReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLStreamReader

      public abstract XMLStreamReader  createXMLStreamReader(String  systemId, Reader  reader) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLStreamReader。
      参数:
      systemId - 流的系统 ID
      reader - 要读取的 InputStream
      返回:
      XMLStreamReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(Reader  reader) throws XMLStreamException
      从阅读器创建一个新的 XMLEventReader。
      参数:
      reader - 要读取的 XML 数据
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(String  systemId, Reader  reader) throws XMLStreamException
      从阅读器创建一个新的 XMLEventReader。
      参数:
      systemId - 输入的系统 ID
      reader - 要读取的 XML 数据
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(XMLStreamReader  reader) throws XMLStreamException
      从 XMLStreamReader 创建一个新的 XMLEventReader。在用于构造从此方法返回的 XMLEventReader 实例后,不得使用 XMLStreamReader。
      参数:
      reader - 要从中读取的 XMLStreamReader(可能无法修改)
      返回:
      一个新的 XMLEventReader
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(Source  source) throws XMLStreamException
      从 JAXP 源创建一个新的 XMLEventReader。对该方法的支持是可选的。
      参数:
      source - 要读取的来源
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
      UnsupportedOperationException - 如果此 XMLInputFactory 不支持此方法
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(InputStream  stream) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLEventReader
      参数:
      stream - 要读取的 InputStream
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(InputStream  stream, String  encoding) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLEventReader
      参数:
      stream - 要读取的 InputStream
      encoding - 流的字符编码
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createXMLEventReader

      public abstract XMLEventReader  createXMLEventReader(String  systemId, InputStream  stream) throws XMLStreamException
      从 java.io.InputStream 创建一个新的 XMLEventReader
      参数:
      systemId - 流的系统 ID
      stream - 要读取的 InputStream
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createFilteredReader

      public abstract XMLStreamReader  createFilteredReader(XMLStreamReader  reader, StreamFilter  filter) throws XMLStreamException
      创建一个过滤阅读器,将过滤器包裹在阅读器周围
      参数:
      reader - 要过滤的读者
      filter - 应用于阅读器的过滤器
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • createFilteredReader

      public abstract XMLEventReader  createFilteredReader(XMLEventReader  reader, EventFilter  filter) throws XMLStreamException
      创建一个过滤事件阅读器,将过滤器包装在事件阅读器周围
      参数:
      reader - 要包装的事件读取器
      filter - 应用于事件阅读器的过滤器
      返回:
      XMLEventReader 的实例
      抛出:
      XMLStreamException - 如果发生错误
    • getXMLResolver

      public abstract XMLResolver  getXMLResolver()
      将在此工厂实例创建的任何 XMLStreamReader 或 XMLEventReader 上设置的解析器。
      返回:
      XMLResolver 的实例
    • setXMLResolver

      public abstract void setXMLResolver(XMLResolver  resolver)
      将在此工厂实例创建的任何 XMLStreamReader 或 XMLEventReader 上设置的解析器。
      参数:
      resolver - 用于解析引用的解析器
    • getXMLReporter

      public abstract XMLReporter  getXMLReporter()
      将在此工厂实例创建的任何 XMLStreamReader 或 XMLEventReader 上设置的报告器。
      返回:
      XMLReporter 的实例
    • setXMLReporter

      public abstract void setXMLReporter(XMLReporter  reporter)
      将在此工厂实例创建的任何 XMLStreamReader 或 XMLEventReader 上设置的报告器。
      参数:
      reporter - 用于报告非致命错误的解析器
    • setProperty

      public abstract void setProperty(String  name, Object  value) throws IllegalArgumentException
      允许用户在底层实现上设置特定的特性/属性。底层实现不需要支持规范中每个属性的每个设置,并且可以使用 IllegalArgumentException 来表示不能使用指定值设置不受支持的属性。

      所有实现 JAXP 1.5 或更新版本的实现都需要支持 XMLConstants.ACCESS_EXTERNAL_DTD 属性。

      参数:
      name - 属性的名称(不能为空)
      value - 属性值
      抛出:
      IllegalArgumentException - 如果不支持该属性
    • getProperty

      public abstract Object  getProperty(String  name) throws IllegalArgumentException
      从底层实现中获取功能/属性的值
      参数:
      name - 属性的名称(不能为空)
      返回:
      财产的值
      抛出:
      IllegalArgumentException - 如果不支持该属性
    • isPropertySupported

      public abstract boolean isPropertySupported(String  name)
      查询该工厂支持的属性集。
      参数:
      name - 属性的名称(不能为空)
      返回:
      如果支持该属性,则为 true,否则为 false
    • setEventAllocator

      public abstract void setEventAllocator(XMLEventAllocator  allocator)
      为事件设置用户定义的事件分配器
      参数:
      allocator - 用户定义的分配器
    • getEventAllocator

      public abstract XMLEventAllocator  getEventAllocator()
      获取使用此工厂创建的流使用的分配器
      返回:
      XMLEventAllocator 的实例