XMLReader
实现类的API。在JAXP 1.0中,这个类包装了Parser
接口,然而这个接口被XMLReader
所取代。为了方便过渡,这个类继续支持相同的名称和接口,并支持新的方法。可以通过SAXParserFactory.newSAXParser()
方法获取此类的实例。一旦获取了此类的实例,就可以从各种输入源解析XML。这些输入源包括InputStreams、Files、URLs和SAX InputSources。
这个静态方法根据系统属性设置创建一个新的工厂实例,如果没有定义属性,则使用平台默认值。
控制要创建的Factory实现的系统属性名为"javax.xml.parsers.SAXParserFactory"
。此属性命名一个是这个抽象类的具体子类的类。如果未定义属性,则将使用平台默认值。
HandlerBase
或DefaultHandler
的方法。
包装底层实现的此类的实现者可以考虑使用ParserAdapter
类来最初适配他们的SAX1实现以在这个修订后的类下工作。
- 自版本:
- 1.4
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionabstract Parser
返回由此类实现封装的SAX解析器。abstract Object
getProperty
(String name) 返回底层实现中XMLReader
请求的特定属性。获取XML处理器正在使用的Schema
的引用。abstract XMLReader
返回由此类实现封装的XMLReader
。abstract boolean
指示此解析器是否配置为理解命名空间。abstract boolean
指示此解析器是否配置为验证XML文档。boolean
获取此解析器的XInclude处理模式。void
parse
(File f, HandlerBase hb) 使用指定的HandlerBase
解析指定为XML的文件内容。void
parse
(File f, DefaultHandler dh) 使用指定的DefaultHandler
解析指定为XML的文件内容。void
parse
(InputStream is, HandlerBase hb) 使用指定的InputStream
实例的内容作为XML,使用指定的HandlerBase
解析。void
parse
(InputStream is, HandlerBase hb, String systemId) 使用指定的InputStream
实例的内容作为XML,使用指定的HandlerBase
解析。void
parse
(InputStream is, DefaultHandler dh) 使用指定的InputStream
实例的内容作为XML,使用指定的DefaultHandler
解析。void
parse
(InputStream is, DefaultHandler dh, String systemId) 使用指定的InputStream
实例的内容作为XML,使用指定的DefaultHandler
解析。void
parse
(String uri, HandlerBase hb) 使用给定的统一资源标识符(URI)描述的内容作为XML,使用指定的HandlerBase
解析。void
parse
(String uri, DefaultHandler dh) 使用给定的统一资源标识符(URI)描述的内容作为XML,使用指定的DefaultHandler
解析。void
parse
(InputSource is, HandlerBase hb) 使用给定的InputSource
的内容作为XML,使用指定的HandlerBase
解析。void
parse
(InputSource is, DefaultHandler dh) 使用给定的InputSource
的内容作为XML,使用指定的DefaultHandler
解析。void
reset()
将此SAXParser
重置为其原始配置。abstract void
setProperty
(String name, Object value) 在底层实现中设置特定属性XMLReader
。
-
Constructor Details
-
SAXParser
protected SAXParser()保护构造函数,防止实例化。使用
SAXParserFactory.newSAXParser()
。
-
-
Method Details
-
reset
public void reset()将此
SAXParser
重置为其原始配置。SAXParser
被重置为使用SAXParserFactory.newSAXParser()
创建时的相同状态。reset()
旨在允许重用现有的SAXParser
,从而节省与创建新SAXParser
相关的资源。重置的
SAXParser
不能保证具有相同的Schema
Object
,例如Object.equals(Object obj)
。它保证具有功能上相等的Schema
。- 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自版本:
- 1.5
-
parse
使用指定的
InputStream
实例的内容作为XML,使用指定的HandlerBase
解析。建议使用此方法的DefaultHandler版本,因为HandlerBase类在SAX 2.0中已被弃用。- 参数:
-
is
- 包含要解析的内容的InputStream。 -
hb
- 要使用的SAX HandlerBase。 - 抛出:
-
IllegalArgumentException
- 如果给定的InputStream为null。 -
SAXException
- 如果解析产生SAX错误。 -
IOException
- 如果与InputStream
交互时发生IO错误。 - 参见:
-
parse
使用指定的
InputStream
实例的内容作为XML,使用指定的HandlerBase
解析。建议使用此方法的DefaultHandler版本,因为HandlerBase类在SAX 2.0中已被弃用。- 参数:
-
is
- 包含要解析的内容的InputStream。 -
hb
- 要使用的SAX HandlerBase。 -
systemId
- 用于解析相对URI的systemId。 - 抛出:
-
IllegalArgumentException
- 如果给定的InputStream
为null
。 -
IOException
- 如果与InputStream
交互时发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的InputStream
实例的内容作为XML,使用指定的DefaultHandler
解析。- 参数:
-
is
- 包含要解析的内容的InputStream。 -
dh
- 要使用的SAX DefaultHandler。 - 抛出:
-
IllegalArgumentException
- 如果给定的InputStream为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
public void parse(InputStream is, DefaultHandler dh, String systemId) throws SAXException, IOException 解析给定的InputStream
实例中的内容,使用指定的DefaultHandler
。- 参数:
-
is
- 包含要解析内容的InputStream。 -
dh
- 要使用的SAX DefaultHandler。 -
systemId
- 用于解析相对URI的systemId。 - 抛出:
-
IllegalArgumentException
- 如果给定的InputStream为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的HandlerBase
解析由给定统一资源标识符(URI)描述的内容作为XML。推荐使用此方法的DefaultHandler版本,因为HandlerBase
类在SAX 2.0中已被弃用- 参数:
-
uri
- 要解析内容的位置。 -
hb
- 要使用的SAX HandlerBase。 - 抛出:
-
IllegalArgumentException
- 如果uri为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的DefaultHandler
解析由给定统一资源标识符(URI)描述的内容作为XML。- 参数:
-
uri
- 要解析内容的位置。 -
dh
- 要使用的SAX DefaultHandler。 - 抛出:
-
IllegalArgumentException
- 如果uri为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的HandlerBase
解析指定的XML文件中的内容。推荐使用此方法的DefaultHandler版本,因为HandlerBase类在SAX 2.0中已被弃用- 参数:
-
f
- 包含要解析的XML的文件 -
hb
- 要使用的SAX HandlerBase。 - 抛出:
-
IllegalArgumentException
- 如果File对象为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的DefaultHandler
解析指定的XML文件中的内容。- 参数:
-
f
- 包含要解析的XML的文件 -
dh
- 要使用的SAX DefaultHandler。 - 抛出:
-
IllegalArgumentException
- 如果File对象为null。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的HandlerBase
解析给定的InputSource
中的内容作为XML。推荐使用此方法的DefaultHandler版本,因为HandlerBase类在SAX 2.0中已被弃用- 参数:
-
is
- 包含要解析内容的InputSource。 -
hb
- 要使用的SAX HandlerBase。 - 抛出:
-
IllegalArgumentException
- 如果InputSource
对象为null
。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
parse
使用指定的DefaultHandler
解析给定的InputSource
中的内容作为XML。- 参数:
-
is
- 包含要解析内容的InputSource。 -
dh
- 要使用的SAX DefaultHandler。 - 抛出:
-
IllegalArgumentException
- 如果InputSource
对象为null
。 -
IOException
- 如果发生任何IO错误。 -
SAXException
- 如果在处理过程中发生任何SAX错误。 - 参见:
-
getParser
返回由此类实现封装的SAX解析器。- 返回:
- 此类实现封装的SAX解析器。
- 抛出:
-
SAXException
- 如果在处理过程中发生任何SAX错误。
-
getXMLReader
返回由此类实现封装的XMLReader
。- 返回:
- 此类实现封装的XMLReader。
- 抛出:
-
SAXException
- 如果在处理过程中发生任何SAX错误。
-
isNamespaceAware
public abstract boolean isNamespaceAware()指示此解析器是否配置为理解命名空间。- 返回:
- 如果此解析器配置为理解命名空间,则为true;否则为false。
-
isValidating
public abstract boolean isValidating()指示此解析器是否配置为验证XML文档。- 返回:
- 如果此解析器配置为验证XML文档,则为true;否则为false。
-
setProperty
public abstract void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException 设置底层实现中的特定属性
XMLReader
。核心功能和属性列表可在http://sax.sourceforge.net/?selected=get-set找到。所有实现JAXP 1.5或更新版本的实现都必须支持
XMLConstants.ACCESS_EXTERNAL_DTD
和XMLConstants.ACCESS_EXTERNAL_SCHEMA
属性。-
设置
XMLConstants.ACCESS_EXTERNAL_DTD
属性会限制对外部DTD、外部实体引用的访问协议。如果由于此属性的限制而在解析过程中拒绝访问,则由SAXException
在SAXParser
定义的解析方法中抛出。设置
XMLConstants.ACCESS_EXTERNAL_SCHEMA
属性会限制对由schemaLocation属性设置的外部模式的访问协议。如果由于此属性的限制而在解析过程中拒绝访问,则由SAXException
在SAXParser
定义的解析方法中抛出。
- 参数:
-
name
- 要设置的属性的名称。 -
value
- 要设置的属性的值。 - 抛出:
-
SAXNotRecognizedException
- 当底层XMLReader不识别属性名称时。 -
SAXNotSupportedException
- 当底层XMLReader识别属性名称但不支持该属性时。 - 参见:
-
-
getProperty
public abstract Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException 返回底层实现中请求的特定属性
XMLReader
。- 参数:
-
name
- 要检索的属性的名称。 - 返回:
- 请求属性的值。
- 抛出:
-
SAXNotRecognizedException
- 当底层XMLReader不识别属性名称时。 -
SAXNotSupportedException
- 当底层XMLReader识别属性名称但不支持该属性时。 - 参见:
-
getSchema
获取XML处理器正在使用的
Schema
的引用。如果未使用模式,则返回
null
。- 返回:
-
正在使用的
Schema
或如果未使用则为null
- 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自:
- 1.5
-
isXIncludeAware
public boolean isXIncludeAware()获取此解析器的XInclude处理模式。
- 返回:
-
当从工厂创建此解析器时,
SAXParserFactory.isXIncludeAware()
的返回值。 - 抛出:
-
UnsupportedOperationException
- 当实现未覆盖此方法时 - 自:
- 1.5
- 参见:
-