模块  java.xml
软件包  javax.xml.stream

Class XMLInputFactory


  • public abstract class XMLInputFactory
    extends Object
    定义用于获取流的工厂的抽象实现。 下表定义了此规范的标准属性。 每个属性的每个实现所需的支持级别各不相同。 所需的支持级别在“必需”列中描述。 Configuration Parameters Property Name Behavior Return type Default Value Required javax.xml.stream.isValidating Turns on/off implementation specific DTD validation Boolean False No javax.xml.stream.isNamespaceAware Turns on/off namespace processing for XML 1.0 support Boolean True True (required) / False (optional) javax.xml.stream.isCoalescing Requires the processor to coalesce adjacent character data Boolean False Yes javax.xml.stream.isReplacingEntityReferences replace internal entity references with their replacement text and report them as characters Boolean True Yes javax.xml.stream.isSupportingExternalEntities Resolve external parsed entities Boolean Unspecified Yes javax.xml.stream.supportDTD Use this property to request processors that do not support DTDs Boolean True Yes javax.xml.stream.reporter sets/gets the impl of the XMLReporter javax.xml.stream.XMLReporter Null Yes javax.xml.stream.resolver sets/gets the impl of the XMLResolver interface javax.xml.stream.XMLResolver Null Yes javax.xml.stream.allocator sets/gets the impl of the XMLEventAllocator interface javax.xml.stream.util.XMLEventAllocator Null Yes
    从以下版本开始:
    1.6
    另请参见:
    XMLOutputFactoryXMLEventReaderXMLStreamReaderEventFilterXMLReporterXMLResolverXMLEventAllocator
    • 字段详细信息

      • IS_NAMESPACE_AWARE

        public static final String IS_NAMESPACE_AWARE
        用于打开/关闭命名空间支持的属性,这是为了支持XML 1.0文档,只需要支持真实设置
        另请参见:
        常数字段值
      • 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()
    • 方法详细信息

      • newDefaultFactory

        public static XMLInputFactory newDefaultFactory()
        创建 XMLInputFactory内置系统默认实现的新实例。
        结果
        XMLInputFactory内置系统默认实现的新实例。
        从以下版本开始:
        9
      • newFactory

        public static XMLInputFactory newFactory()
                                          throws FactoryConfigurationError
        创建工厂的新实例。

        此静态方法创建新的工厂实例。 此方法使用以下有序查找过程来确定要加载的XMLInputFactory实现类:

        • 使用javax.xml.stream.XMLInputFactory系统属性。

        • 使用配置文件“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实现。

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

        异常
        FactoryConfigurationError - 如果是service configuration error,或者如果实现不可用或无法实例化。
      • newFactory

        public static XMLInputFactory newFactory​(String factoryId,
                                                 ClassLoader classLoader)
                                          throws FactoryConfigurationError
        创建工厂的新实例。 如果classLoader参数为null,则使用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类,试图locate and load使用指定的服务的实现ClassLoader 如果classLoader为null,则应用default loading mechanism :即,服务提供者加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null,则将使用system class loader

        • 否则,抛出一个FactoryConfigurationError

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

        API Note:
        此处定义的参数factoryId与其他JAXP工厂的参数不一致,其中第一个参数是提供工厂实现的完全限定工厂类名。
        参数
        factoryId - 要查找的工厂的名称,与属性名称相同
        classLoader - 要使用的classLoader
        结果
        工厂实施
        异常
        FactoryConfigurationError - 如果是service configuration error,或者实现不可用或无法实例化。
        FactoryConfigurationError - 如果无法加载此工厂的实例
      • createXMLEventReader

        public abstract XMLEventReader createXMLEventReader​(XMLStreamReader reader)
                                                     throws XMLStreamException
        从XMLStreamReader创建一个新的XMLEventReader。 在用于构造从此方法返回的XMLEventReader实例之后,不得使用XMLStreamReader。
        参数
        reader - 要读取的XMLStreamReader(可能不会被修改)
        结果
        一个新的XMLEventReader
        异常
        XMLStreamException
      • getXMLResolver

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

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

        public abstract XMLReporter getXMLReporter()
        将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的报告者。
      • 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 - 该物业的名称(不得为null)
        value - 属性的值
        异常
        IllegalArgumentException - 如果不支持该属性
      • isPropertySupported

        public abstract boolean isPropertySupported​(String name)
        查询此工厂支持的属性集。
        参数
        name - 该物业的名称(不得为null)
        结果
        如果属性受支持,则为true,否则为false
      • setEventAllocator

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

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