java.lang.Object
javax.xml.stream.XMLInputFactory
定义了一个用于获取流的工厂的抽象实现。以下表格定义了此规范的标准属性。每个属性在每个实现中所需的支持级别不同。所需的支持级别在“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 Summary
Modifier and TypeFieldDescriptionstatic final String
用于设置/获取分配器实现的属性static final String
需要解析器合并相邻的字符数据部分的属性static final String
用于打开/关闭命名空间支持的属性,这是为了支持XML 1.0文档,只有true设置必须受支持static final String
需要解析器用替换文本替换内部实体引用并将其报告为字符的属性static final String
需要解析器解析外部解析实体的属性static final String
用于打开/关闭特定实现验证的属性static final String
用于设置/获取XMLReporter接口的实现的属性static final String
用于设置/获取XMLResolver的实现的属性static final String
需要解析器支持DTD的属性 -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract 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创建一个新的XMLEventReaderabstract XMLEventReader
createXMLEventReader
(Source source) 从JAXP源创建一个新的XMLEventReaderabstract 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源创建一个新的XMLStreamReaderabstract XMLEventAllocator
获取由此工厂创建的流使用的分配器abstract Object
getProperty
(String name) 从底层实现获取特定功能/属性的值abstract XMLReporter
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的报告器。abstract XMLResolver
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的解析器。abstract boolean
isPropertySupported
(String name) 查询此工厂支持的属性集。static XMLInputFactory
创建XMLInputFactory
内置系统默认实现的新实例。static XMLInputFactory
创建工厂的新实例。static XMLInputFactory
newFactory
(String factoryId, ClassLoader classLoader) 创建工厂的新实例。static XMLInputFactory
以与newFactory()
方法完全相同的方式创建工厂的新实例。static XMLInputFactory
newInstance
(String factoryId, ClassLoader classLoader) 已弃用。为了保持API一致性,此方法已被弃用。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上设置的解析器。
-
Field Details
-
IS_NAMESPACE_AWARE
用于打开/关闭命名空间支持的属性,这是为了支持XML 1.0文档,只有true设置必须受支持- 参见:
-
IS_VALIDATING
用于打开/关闭特定实现验证的属性- 参见:
-
IS_COALESCING
需要解析器合并相邻的字符数据部分的属性- 参见:
-
IS_REPLACING_ENTITY_REFERENCES
需要解析器用替换文本替换内部实体引用并将其报告为字符的属性- 参见:
-
IS_SUPPORTING_EXTERNAL_ENTITIES
需要解析器解析外部解析实体的属性- 参见:
-
SUPPORT_DTD
需要解析器支持DTD的属性- 参见:
-
REPORTER
用于设置/获取XMLReporter接口的实现的属性- 参见:
-
RESOLVER
用于设置/获取XMLResolver的实现的属性- 参见:
-
ALLOCATOR
用于设置/获取分配器实现的属性- 参见:
-
-
Constructor Details
-
XMLInputFactory
protected XMLInputFactory()受保护的构造函数,防止实例化。请使用newFactory()
。
-
-
Method Details
-
newDefaultFactory
创建XMLInputFactory
内置系统默认实现的新实例。- 返回:
-
XMLInputFactory
内置系统默认实现的新实例。 - 自:
- 9
-
newInstance
以与newFactory()
方法完全相同的方式创建工厂的新实例。- 返回:
-
XMLInputFactory
的一个实例 - 抛出:
-
FactoryConfigurationError
- 如果无法加载此工厂的实例
-
newFactory
- 返回:
-
一个
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 replacementnewFactory(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
从读取器创建一个新的XMLStreamReader。- 参数:
-
reader
- 要从中读取的XML数据 - 返回:
-
一个
XMLStreamReader
实例 - 抛出:
-
XMLStreamException
- 如果发生错误
-
createXMLStreamReader
从JAXP源创建一个新的XMLStreamReader。此方法是可选的。- 参数:
-
source
- 要从中读取的源 - 返回:
-
一个
XMLStreamReader
实例 - 抛出:
-
UnsupportedOperationException
- 如果此方法不受此XMLInputFactory支持 -
XMLStreamException
- 如果发生错误
-
createXMLStreamReader
从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
从读取器创建一个新的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
从JAXP源创建一个新的XMLEventReader。此方法的支持是可选的。- 参数:
-
source
- 要从中读取的源 - 返回:
-
一个
XMLEventReader
实例 - 抛出:
-
XMLStreamException
- 如果发生错误 -
UnsupportedOperationException
- 如果此方法不受此XMLInputFactory支持
-
createXMLEventReader
从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
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的解析器。- 返回:
-
XMLResolver
的实例
-
setXMLResolver
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的解析器。- 参数:
-
resolver
- 用于解析引用的解析器
-
getXMLReporter
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的报告器。- 返回:
-
XMLReporter
的实例
-
setXMLReporter
将在此工厂实例创建的任何XMLStreamReader或XMLEventReader上设置的报告器。- 参数:
-
reporter
- 用于报告非致命错误的解析器
-
setProperty
允许用户在底层实现上设置特定的特性/属性。底层实现不需要支持规范中每个属性的每个设置,并且可能使用IllegalArgumentException来表示不支持使用指定值设置不支持的属性。所有实现JAXP 1.5或更新版本的实现都必须支持
XMLConstants.ACCESS_EXTERNAL_DTD
属性。-
对外部DTD、外部实体引用的访问受到属性指定的协议的限制。如果由于此属性的限制而在解析期间拒绝访问,则
XMLStreamException
将由XMLStreamReader.next()
或XMLEventReader.nextEvent()
方法抛出。
- 参数:
-
name
- 属性的名称(不能为空) -
value
- 属性的值 - 抛出:
-
IllegalArgumentException
- 如果不支持该属性
-
-
getProperty
从底层实现获取特性/属性的值- 参数:
-
name
- 属性的名称(不能为空) - 返回:
- 属性的值
- 抛出:
-
IllegalArgumentException
- 如果不支持该属性
-
isPropertySupported
查询此工厂支持的属性集。- 参数:
-
name
- 属性的名称(不能为空) - 返回:
- 如果支持该属性则返回true,否则返回false
-
setEventAllocator
为事件设置用户定义的事件分配器- 参数:
-
allocator
- 用户定义的分配器
-
getEventAllocator
获取使用此工厂创建的流使用的分配器- 返回:
-
XMLEventAllocator
的实例
-