Most visited

Recently visited

Added in API level 1

XMLReader

public interface XMLReader

org.xml.sax.XMLReader
Known Indirect Subclasses


使用回调来读取XML文档的接口。

This module, both source code and documentation, is in the Public Domain, and comes with NO WARRANTY. See http://www.saxproject.org for further information.

注意:尽管有它的名字,但这个接口 没有扩展标准的Java Reader接口,因为读取XML与读取字符数据是完全不同的活动。

XMLReader是XML解析器的SAX2驱动程序必须实现的接口。 该接口允许应用程序设置和查询解析器中的特性和属性,注册用于文档处理的事件处理程序,并启动文档解析。

假定所有SAX接口都是同步的: parse方法在解析完成之前不能返回,并且在报告下一个事件之前,读者必须等待事件处理程序回调才能返回。

此接口取代了(现在已弃用的)SAX 1.0 Parser接口。 XMLReader接口包含两个比旧的Parser接口(以及一些小的接口)更重要的增强功能:

  1. it adds a standard way to query and set features and properties; and
  2. it adds Namespace support, which is required for many higher-level XML standards.

有适配器可用于将SAX1解析器转换为SAX2 XMLReader,反之亦然。

也可以看看:

Summary

Public methods

abstract ContentHandler getContentHandler()

返回当前的内容处理程序。

abstract DTDHandler getDTDHandler()

返回当前的DTD处理程序。

abstract EntityResolver getEntityResolver()

返回当前的实体解析器。

abstract ErrorHandler getErrorHandler()

返回当前的错误处理程序。

abstract boolean getFeature(String name)

查找功能标志的值。

abstract Object getProperty(String name)

查找一个属性的值。

abstract void parse(InputSource input)

解析一个XML文档。

abstract void parse(String systemId)

从系统标识符(URI)解析XML文档。

abstract void setContentHandler(ContentHandler handler)

允许应用程序注册内容事件处理程序。

abstract void setDTDHandler(DTDHandler handler)

允许应用程序注册DTD事件处理程序。

abstract void setEntityResolver(EntityResolver resolver)

允许应用程序注册实体解析器。

abstract void setErrorHandler(ErrorHandler handler)

允许应用程序注册错误事件处理程序。

abstract void setFeature(String name, boolean value)

设置功能标志的值。

abstract void setProperty(String name, Object value)

设置属性的值。

Public methods

getContentHandler

Added in API level 1
ContentHandler getContentHandler ()

返回当前的内容处理程序。

Returns
ContentHandler The current content handler, or null if none has been registered.

也可以看看:

getDTDHandler

Added in API level 1
DTDHandler getDTDHandler ()

返回当前的DTD处理程序。

Returns
DTDHandler The current DTD handler, or null if none has been registered.

也可以看看:

getEntityResolver

Added in API level 1
EntityResolver getEntityResolver ()

返回当前的实体解析器。

Returns
EntityResolver The current entity resolver, or null if none has been registered.

也可以看看:

getErrorHandler

Added in API level 1
ErrorHandler getErrorHandler ()

返回当前的错误处理程序。

Returns
ErrorHandler The current error handler, or null if none has been registered.

也可以看看:

getFeature

Added in API level 1
boolean getFeature (String name)

查找功能标志的值。

功能名称是任何完全限定的URI。 XMLReader可能会识别功能名称,但暂时无法返回其值。 某些功能值只能在特定的上下文中使用,例如在解析之前,之中或之后。 此外,某些功能值可能无法通过编程访问。 (对于SAX1 Parser的适配器,没有独立于实现的方式来暴露底层解析器是否正在执行验证,扩展外部实体等等。)

所有XMLReader都需要识别http://xml.org/sax/features/namespaces和http://xml.org/sax/features/namespace-prefixes功能名称。

典型的用法是这样的:

 XMLReader r = new MySAXDriver();

                         // try to activate validation
 try {
   r.setFeature("http://xml.org/sax/features/validation", true);
 } catch (SAXException e) {
   System.err.println("Cannot activate validation.");
 }

                         // register event handlers
 r.setContentHandler(new MyContentHandler());
 r.setErrorHandler(new MyErrorHandler());

                         // parse the first document
 try {
   r.parse("http://www.foo.com/mydoc.xml");
 } catch (IOException e) {
   System.err.println("I/O exception reading XML document");
 } catch (SAXException e) {
   System.err.println("XML exception reading document.");
 }
 

实现者可以免费(并鼓励)使用构建在他们自己的URI上的名称来创建自己的特性。

Parameters
name String: The feature name, which is a fully-qualified URI.
Returns
boolean The current value of the feature (true or false).
Throws
SAXNotRecognizedException If the feature value can't be assigned or retrieved.
SAXNotSupportedException When the XMLReader recognizes the feature name but cannot determine its value at this time.

也可以看看:

getProperty

Added in API level 1
Object getProperty (String name)

查找一个属性的值。

属性名称是任何完全限定的URI。 XMLReader可能会识别属性名称,但暂时无法返回其值。 某些属性值可能仅在特定上下文中可用,例如在解析之前,之中或之后。

XMLReaders不需要识别任何特定的属性名称,但是初始核心集合记录在SAX2中。

实现者可以免费(并鼓励)使用构建在他们自己的URI上的名称来创建他们自己的属性。

Parameters
name String: The property name, which is a fully-qualified URI.
Returns
Object The current value of the property.
Throws
SAXNotRecognizedException If the property value can't be assigned or retrieved.
SAXNotSupportedException When the XMLReader recognizes the property name but cannot determine its value at this time.

也可以看看:

parse

Added in API level 1
void parse (InputSource input)

解析一个XML文档。

应用程序可以使用此方法来指示XML阅读器开始从任何有效的输入源(字符流,字节流或URI)解析XML文档。

应用程序可能不会在解析过程中调用此方法(它们应该为每个嵌套的XML文档创建一个新的XMLReader)。 解析完成后,应用程序可能会重用相同的XMLReader对象,可能会使用不同的输入源。 除非配置的该方面的定义明确指定了其他行为,否则XMLReader对象的配置(例如为功能标志和属性建立的处理程序绑定和值)不会改变。 (例如,特征标志或属性暴露了正在分析的文档的特征。)

在解析过程中,XMLReader将通过注册的事件处理程序提供有关XML文档的信息。

这种方法是同步的:直到解析结束才会返回。 如果客户端应用程序想要尽早终止解析,它应该抛出异常。

Parameters
input InputSource: The input source for the top-level of the XML document.
Throws
SAXException Any SAX exception, possibly wrapping another exception.
IOException An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.

也可以看看:

parse

Added in API level 1
void parse (String systemId)

从系统标识符(URI)解析XML文档。

此方法是从系统标识符中读取文档的常见情况的快捷方式。 这与以下内容完全相同:

 parse(new InputSource(systemId));
 

如果系统标识符是一个URL,那么它在传递给解析器之前必须由应用程序完全解析。

Parameters
systemId String: The system identifier (URI).
Throws
SAXException Any SAX exception, possibly wrapping another exception.
IOException An IO exception from the parser, possibly from a byte stream or character stream supplied by the application.

也可以看看:

setContentHandler

Added in API level 1
void setContentHandler (ContentHandler handler)

允许应用程序注册内容事件处理程序。

如果应用程序未注册内容处理程序,则SAX解析器报告的所有内容事件都将被忽略。

应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。

Parameters
handler ContentHandler: The content handler.

也可以看看:

setDTDHandler

Added in API level 1
void setDTDHandler (DTDHandler handler)

允许应用程序注册DTD事件处理程序。

如果应用程序未注册DTD处理程序,则SAX解析器报告的所有DTD事件都将被忽略。

应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。

Parameters
handler DTDHandler: The DTD handler.

也可以看看:

setEntityResolver

Added in API level 1
void setEntityResolver (EntityResolver resolver)

允许应用程序注册实体解析器。

如果应用程序未注册实体解析器,则XMLReader将执行其自己的默认解析。

应用程序可以在解析中注册一个新的或不同的解析器,并且SAX解析器必须立即开始使用新的解析器。

Parameters
resolver EntityResolver: The entity resolver.

也可以看看:

setErrorHandler

Added in API level 1
void setErrorHandler (ErrorHandler handler)

允许应用程序注册错误事件处理程序。

如果应用程序没有注册错误处理程序,则SAX解析器报告的所有错误事件将被忽略; 但是,正常的处理可能不会继续。 强烈建议所有SAX应用程序实施错误处理程序以避免意外的错误。

应用程序可以在解析中注册新的或不同的处理程序,并且SAX解析器必须立即开始使用新的处理程序。

Parameters
handler ErrorHandler: The error handler.

也可以看看:

setFeature

Added in API level 1
void setFeature (String name, 
                boolean value)

设置功能标志的值。

功能名称是任何完全限定的URI。 XMLReader可能公开一个特征值,但无法更改当前值。 某些特征值只能在特定上下文中不可变或可变,例如在解析之前,之中或之后。

所有XMLReaders都必须支持将http://xml.org/sax/features/namespaces设置为true,并将http://xml.org/sax/features/namespace-prefixes设置为false。

Parameters
name String: The feature name, which is a fully-qualified URI.
value boolean: The requested value of the feature (true or false).
Throws
SAXNotRecognizedException If the feature value can't be assigned or retrieved.
SAXNotSupportedException When the XMLReader recognizes the feature name but cannot set the requested value.

也可以看看:

setProperty

Added in API level 1
void setProperty (String name, 
                Object value)

设置属性的值。

属性名称是任何完全限定的URI。 XMLReader可能会识别属性名称,但无法更改当前值。 某些属性值只有在特定的上下文中才可以是不可变的或可变的,例如在解析之前,之中或之后。

XMLReaders不需要识别设置任何特定的属性名称,但核心集由SAX2定义。

该方法也是设置扩展处理程序的标准机制。

Parameters
name String: The property name, which is a fully-qualified URI.
value Object: The requested value for the property.
Throws
SAXNotRecognizedException If the property value can't be assigned or retrieved.
SAXNotSupportedException When the XMLReader recognizes the property name but cannot set the requested value.

Hooray!