- java.lang.Object
-
- javax.xml.stream.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
- Version:
- 1.2
- 另请参见:
-
XMLOutputFactory
,XMLEventReader
,XMLStreamReader
,EventFilter
,XMLReporter
,XMLResolver
,XMLEventAllocator
-
-
Field Summary
Fields Modifier and Type Field 描述 static String
ALLOCATOR
该属性用于设置/获取分配器的实现static String
IS_COALESCING
需要解析器来合并相邻字符数据部分的属性static String
IS_NAMESPACE_AWARE
该属性用于打开/关闭命名空间支持,这是为了支持XML 1.0文档,只有真正的设置必须被支持static String
IS_REPLACING_ENTITY_REFERENCES
需要解析器用其替换文本替换内部实体引用并将其报告为字符static String
IS_SUPPORTING_EXTERNAL_ENTITIES
需要解析器解析外部解析实体的属性static String
IS_VALIDATING
用于打开/关闭实现特定验证的属性static String
REPORTER
该属性用于设置/获取XMLReporter接口的实现static String
RESOLVER
该属性用于设置/获取XMLResolver的实现static String
SUPPORT_DTD
需要解析器支持DTD的属性
-
构造方法摘要
构造方法 Modifier Constructor 描述 protected
XMLInputFactory()
-
方法摘要
所有方法 静态方法 接口方法 抽象方法 具体的方法 弃用的方法 Modifier and Type 方法 描述 abstract XMLEventReader
createFilteredReader(XMLEventReader reader, EventFilter filter)
创建一个过滤的事件读取器,将过滤器包裹在事件读取器周围abstract XMLStreamReader
createFilteredReader(XMLStreamReader reader, StreamFilter filter)
创建一个过滤的阅读器,将过滤器包裹在阅读器周围abstract XMLEventReader
createXMLEventReader(InputStream stream)
从java.io.InputStream创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader(InputStream stream, String encoding)
从java.io.InputStream创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader(Reader reader)
从阅读器创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader(String systemId, InputStream stream)
从java.io.InputStream创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader(String systemId, Reader reader)
从阅读器创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader(XMLStreamReader reader)
从XMLStreamReader创建一个新的XMLEventReader。abstract XMLEventReader
createXMLEventReader(Source source)
从JAXP源创建一个新的XMLEventReader。abstract XMLStreamReader
createXMLStreamReader(InputStream stream)
从java.io.InputStream创建一个新的XMLStreamReaderabstract XMLStreamReader
createXMLStreamReader(InputStream stream, String encoding)
从java.io.InputStream创建一个新的XMLStreamReaderabstract XMLStreamReader
createXMLStreamReader(Reader reader)
从阅读器创建一个新的XMLStreamReaderabstract XMLStreamReader
createXMLStreamReader(String systemId, InputStream stream)
从java.io.InputStream创建一个新的XMLStreamReaderabstract XMLStreamReader
createXMLStreamReader(String systemId, Reader reader)
从java.io.InputStream创建一个新的XMLStreamReaderabstract XMLStreamReader
createXMLStreamReader(Source source)
从JAXP源创建一个新的XMLStreamReader。abstract XMLEventAllocator
getEventAllocator()
获取由此工厂创建的流使用的分配器abstract Object
getProperty(String name)
从底层实现获取特征/属性的值abstract XMLReporter
getXMLReporter()
该记者会设置在由此工厂实例创建的任何XMLStreamReader或XMLEventReader上。abstract XMLResolver
getXMLResolver()
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的解析器。abstract boolean
isPropertySupported(String name)
查询此工厂支持的属性集。static XMLInputFactory
newDefaultFactory()
创建一个新的实例的内置的系统默认实现XMLInputFactory
。static XMLInputFactory
newFactory()
已过时。static XMLInputFactory
newFactory(String factoryId, ClassLoader classLoader)
创建一个新的工厂实例。static XMLInputFactory
newInstance()
以与newFactory()
方法完全相同的方式创建工厂的新实例。static XMLInputFactory
newInstance(String factoryId, ClassLoader classLoader)
已过时。该方法已被弃用,以保持API的一致性。 所有newInstance方法已被替换为相应的newFactory方法。 替换newFactory(java.lang.String, java.lang.ClassLoader)
方法定义行为没有变化。abstract void
setEventAllocator(XMLEventAllocator allocator)
为事件设置用户定义的事件分配器abstract void
setProperty(String name, Object value)
允许用户在底层实现上设置特定的功能/属性。abstract void
setXMLReporter(XMLReporter reporter)
该记者会设置在由此工厂实例创建的任何XMLStreamReader或XMLEventReader上。abstract void
setXMLResolver(XMLResolver resolver)
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的解析器。
-
-
-
字段详细信息
-
IS_NAMESPACE_AWARE
public static final String IS_NAMESPACE_AWARE
该属性用于打开/关闭命名空间支持,这是为了支持XML 1.0文档,只有真正的设置必须被支持- 另请参见:
- Constant Field Values
-
IS_VALIDATING
public static final String IS_VALIDATING
用于打开/关闭实现特定验证的属性- 另请参见:
- Constant Field Values
-
IS_COALESCING
public static final String IS_COALESCING
需要解析器来合并相邻字符数据部分的属性- 另请参见:
- Constant Field Values
-
IS_REPLACING_ENTITY_REFERENCES
public static final String IS_REPLACING_ENTITY_REFERENCES
需要解析器用其替换文本替换内部实体引用并将其报告为字符- 另请参见:
- Constant Field Values
-
IS_SUPPORTING_EXTERNAL_ENTITIES
public static final String IS_SUPPORTING_EXTERNAL_ENTITIES
需要解析器解析外部解析实体的属性- 另请参见:
- Constant Field Values
-
SUPPORT_DTD
public static final String SUPPORT_DTD
需要解析器支持DTD的属性- 另请参见:
- Constant Field Values
-
REPORTER
public static final String REPORTER
该属性用于设置/获取XMLReporter接口的实现- 另请参见:
- Constant Field Values
-
RESOLVER
public static final String RESOLVER
该属性用于设置/获取XMLResolver的实现- 另请参见:
- Constant Field Values
-
ALLOCATOR
public static final String ALLOCATOR
该属性用于设置/获取分配器的实现- 另请参见:
- Constant Field Values
-
-
方法详细信息
-
newDefaultFactory
public static XMLInputFactory newDefaultFactory()
创建一个新的XMLInputFactory
内建系统默认实现。- 结果
-
XMLInputFactory
内建系统默认实现的新实例。 - 从以下版本开始:
- 9
-
newInstance
public static XMLInputFactory newInstance() throws FactoryConfigurationError
以与newFactory()
方法完全相同的方式创建工厂的新实例。- 异常
-
FactoryConfigurationError
- 如果此工厂的实例无法加载
-
newFactory
@Deprecated(since="1.7") 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的引用,它可以使用工厂来配置和获取流实例。
请注意,这是一种替代不推荐使用的newInstance()方法的新方法。 相对于不推荐使用的方法,此替换方法没有定义行为更改。
- 异常
-
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。
-
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
- 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
类,试图locate and load使用指定的服务的实现ClassLoader
。 如果classLoader
为空,则将使用default loading mechanism :即,服务提供商加载工具将使用current thread's context class loader尝试加载服务。 如果上下文类加载器为null,将使用system class loader 。否则,抛出一个
FactoryConfigurationError
。
请注意,这是一种替代已弃用的
newInstance(String factoryId, ClassLoader classLoader)
方法的新方法。 相对于不推荐使用的方法,此替换方法没有定义行为更改。- API Note:
- 这里定义的参数factoryId与其他JAXP工厂的参数factoryId不一致,其中第一个参数是提供工厂实现的完全限定的工厂类名称。
- 参数
-
factoryId
- 要查找的工厂名称,与属性名称相同 -
classLoader
- classLoader使用 - 结果
- 工厂实施
- 异常
-
FactoryConfigurationError
-在以下情况下service configuration error或者如果实现不可用或不能被实例化。 -
FactoryConfigurationError
- 如果此工厂的实例无法加载
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(Reader reader) throws XMLStreamException
从阅读器创建一个新的XMLStreamReader- 参数
-
reader
- 要读取的XML数据 - 异常
-
XMLStreamException
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(Source source) throws XMLStreamException
从JAXP源创建一个新的XMLStreamReader。 此方法是可选的。- 参数
-
source
- 要阅读的来源 - 异常
-
UnsupportedOperationException
- 如果此XMLInputFactory不支持此方法 -
XMLStreamException
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(InputStream stream) throws XMLStreamException
从java.io.InputStream创建一个新的XMLStreamReader- 参数
-
stream
- 要读取的InputStream - 异常
-
XMLStreamException
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(InputStream stream, String encoding) throws XMLStreamException
从java.io.InputStream创建一个新的XMLStreamReader- 参数
-
stream
- 要读取的InputStream -
encoding
- 流的字符编码 - 异常
-
XMLStreamException
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(String systemId, InputStream stream) throws XMLStreamException
从java.io.InputStream创建一个新的XMLStreamReader- 参数
-
systemId
- 流的系统ID -
stream
- 要读取的InputStream - 异常
-
XMLStreamException
-
createXMLStreamReader
public abstract XMLStreamReader createXMLStreamReader(String systemId, Reader reader) throws XMLStreamException
从java.io.InputStream创建一个新的XMLStreamReader- 参数
-
systemId
- 流的系统ID -
reader
- 要读取的InputStream - 异常
-
XMLStreamException
-
createXMLEventReader
public abstract XMLEventReader createXMLEventReader(Reader reader) throws XMLStreamException
从阅读器创建一个新的XMLEventReader- 参数
-
reader
- 要读取的XML数据 - 异常
-
XMLStreamException
-
createXMLEventReader
public abstract XMLEventReader createXMLEventReader(String systemId, Reader reader) throws XMLStreamException
从阅读器创建一个新的XMLEventReader- 参数
-
systemId
- 输入的系统ID -
reader
- 要读取的XML数据 - 异常
-
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
- 要阅读的来源 - 异常
-
UnsupportedOperationException
- 如果此XMLInputFactory不支持此方法 -
XMLStreamException
-
createXMLEventReader
public abstract XMLEventReader createXMLEventReader(InputStream stream) throws XMLStreamException
从java.io.InputStream创建一个新的XMLEventReader- 参数
-
stream
- 要读取的InputStream - 异常
-
XMLStreamException
-
createXMLEventReader
public abstract XMLEventReader createXMLEventReader(InputStream stream, String encoding) throws XMLStreamException
从java.io.InputStream创建一个新的XMLEventReader- 参数
-
stream
- 要读取的InputStream -
encoding
- 流的字符编码 - 异常
-
XMLStreamException
-
createXMLEventReader
public abstract XMLEventReader createXMLEventReader(String systemId, InputStream stream) throws XMLStreamException
从java.io.InputStream创建一个新的XMLEventReader- 参数
-
systemId
- 流的系统ID -
stream
- 要读取的InputStream - 异常
-
XMLStreamException
-
createFilteredReader
public abstract XMLStreamReader createFilteredReader(XMLStreamReader reader, StreamFilter filter) throws XMLStreamException
创建一个过滤的阅读器,将过滤器包裹在阅读器周围- 参数
-
reader
- 读者过滤 -
filter
- 应用于读者的过滤器 - 异常
-
XMLStreamException
-
createFilteredReader
public abstract XMLEventReader createFilteredReader(XMLEventReader reader, EventFilter filter) throws XMLStreamException
创建一个过滤的事件读取器,将过滤器包裹在事件读取器周围- 参数
-
reader
- 事件阅读器包装 -
filter
- 应用于事件读取器的过滤器 - 异常
-
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
属性。访问外部DTD,外部实体引用仅限于属性指定的协议。 如果访问被解析,由于该属性的限制时否认,
XMLStreamException
将被抛出XMLStreamReader.next()
或者XMLEventReader.nextEvent()
方法。
- 参数
-
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()
获取由此工厂创建的流使用的分配器
-
-