Module java.xml
Package javax.xml.stream

Class XMLInputFactory

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

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

    • 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
      用于设置/获取分配器实现的属性
      参见:
  • Constructor Details

    • XMLInputFactory

      protected XMLInputFactory()
      受保护的构造函数,防止实例化。请使用newFactory()
  • Method Details

    • 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
      Deprecated.
      This method has been deprecated to maintain API consistency. All newInstance methods have been replaced with corresponding newFactory methods. The replacement newFactory(java.lang.String, java.lang.ClassLoader) method defines no changes in behavior.
      创建一个新的工厂实例。
      参数:
      factoryId - 要查找的工厂名称,与属性名称相同
      classLoader - 要使用的类加载器
      返回:
      工厂实现
      抛出:
      FactoryConfigurationError - 如果无法加载此工厂的实例
    • newFactory

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

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

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

      • 使用配置文件中设置的属性factoryId的值,默认情况下为jaxp.properties。如果文件存在并且文件中指定了属性factoryId,则其值将用作实现类。

      • 如果factoryId为"javax.xml.stream.XMLInputFactory",则使用由ServiceLoader类定义的服务提供程序加载机制,尝试使用指定的ClassLoader 定位和加载服务的实现。如果classLoader为null,则将应用默认加载机制:即,服务提供程序加载设施将使用当前线程的上下文类加载器尝试加载服务。如果上下文类加载器为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的实例