所有类


org.xml.sax
接口 XMLReader

所有已知子接口:
XMLFilter
所有已知实现类:
ParserAdapter, XMLFilterImpl

public interface XMLReader

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

此模块(包括源代码和文档)在公共域中,同时 没有担保有关更多信息,请参阅 http://www.saxproject.org

注:不管其名称如何,此接口 扩展标准的 Java Reader 接口,因为读取 XML 是一个与读取字符数据完全不同的活动。

XMLReader 是 XML 解析器的 SAX2 驱动程序必须实现的接口。此接口允许应用程序设置和查询解析器中的功能和属性,注册文档处理的事件处理程序,以及开始文档解析。

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

此接口取代了(现在不推荐) SAX 1.0 Parser 接口。与旧的解析器接口(和某些监控器接口)相比,XMLReader 接口具有两大重要增强:

  1. 它增加了查询和设置功能和属性的标准方法;并且
  2. 增加了对名称空间的支持,这是许多高层的 XML 标准所必需的。

存在将 SAX1 解析器转换为 SAX2 XMLReader 的适配器并且反之亦然。

从以下版本开始:
SAX 2.0
另请参见:
XMLFilter, ParserAdapter, XMLReaderAdapter

方法摘要
 ContentHandlergetContentHandler()
          返回当前的内容处理程序。
 DTDHandlergetDTDHandler()
          返回当前的 DTD 处理程序。
 EntityResolvergetEntityResolver()
          返回当前的实体解析器。
 ErrorHandlergetErrorHandler()
          返回当前的错误处理程序。
 booleangetFeature(String name)
          查找功能标志的值。
 ObjectgetProperty(String name)
          查找属性的值。
 voidparse(InputSource input)
          解析 XML 文档。
 voidparse(String systemId)
          从系统标识符 (URI) 解析 XML 文档。
 voidsetContentHandler(ContentHandler handler)
          允许应用程序注册内容事件处理程序。
 voidsetDTDHandler(DTDHandler handler)
          允许应用程序注册 DTD 事件处理程序。
 voidsetEntityResolver(EntityResolver resolver)
          允许应用程序注册实体分析器。
 voidsetErrorHandler(ErrorHandler handler)
          允许应用程序注册错误事件处理程序。
 voidsetFeature(String name, boolean value)
          设置功能标志的值。
 voidsetProperty(String name, Object value)
          设置属性的值。
 

方法详细信息

getFeature

boolean getFeature(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
查找功能标志的值。

功能名称是任何完全限定 URI。XMLReader 识别功能名称是可能的,但暂时不能返回它的值。有些功能值仅在特定的上下文中可用,例如在解析之前、期间或之后。另外,有些功能值不能以编程方式访问。(如果是用于 SAX1 Parser 的适配器,则将没有独立于实现的方法来公开基础解析器是否在执行验证,是否展开外部实体等。)

要求所有的 XMLReaders 都能识别 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 上构建的名称,实现可以随意(建议)设计其自己的功能。

参数:
name - 功能名称,它是一个完全限定 URI。
返回:
该功能的当前值(true 或 false)。
抛出:
SAXNotRecognizedException - 如果功能值不能分配或检索。
SAXNotSupportedException - 当 XMLReader 能够识别功能名称但此时却无法确定其值时。
另请参见:
setFeature(java.lang.String, boolean)

setFeature

void setFeature(String name,
                boolean value)
                throws SAXNotRecognizedException,
                       SAXNotSupportedException
设置功能标志的值。

功能名称是任何完全限定 URI。XMLReader 可以公开功能值,但却无法改变当前值。有些功能值仅在特定的上下文中不可改变或可以改变,例如在解析之前、期间或之后。

要求所有的 XMLReaders 支持把 http://xml.org/sax/features/namespaces 设置为 true,把 http://xml.org/sax/features/namespace-prefixes 设置为 false。

参数:
name - 功能名称,它是一个完全限定 URI。
value - 请求的功能值(true 或 false)。
抛出:
SAXNotRecognizedException - 如果功能值不能分配或检索。
SAXNotSupportedException - 当 XMLReader 能够识别功能名称但不能设置请求的值时。
另请参见:
getFeature(java.lang.String)

getProperty

Object getProperty(String name)
                   throws SAXNotRecognizedException,
                          SAXNotSupportedException
查找属性的值。

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

不要求 XMLReaders 能够识别任何特定的属性名称,但要记录 SAX2 的初始核心集。

使用在其自己的 URI 上构建的名称,实现可以随意(并且推荐)设计其自己的属性。

参数:
name - 属性名称,它是一个完全限定 URI。
返回:
属性的当前值。
抛出:
SAXNotRecognizedException - 如果属性值不能分配或检索。
SAXNotSupportedException - 当 XMLReader 能够识别属性名称但此时却不能确定其值时。
另请参见:
setProperty(java.lang.String, java.lang.Object)

setProperty

void setProperty(String name,
                 Object value)
                 throws SAXNotRecognizedException,
                        SAXNotSupportedException
设置属性的值。

属性名称是任何完全限定 URI。XMLReader 可以识别属性名称,但却不能改变当前值。有些属性值仅在特定的上下文中不可改变或可以改变,例如在解析之前、期间或之后。

不要求 XMLReaders 知道设置任何特定的属性名称,尽管 SAX2 定义了核心集。

此方法还是用于设置扩展的处理程序的标准机制。

参数:
name - 属性名称,它是一个完全限定 URI。
value - 请求的属性值。
抛出:
SAXNotRecognizedException - 如果属性值不能分配或检索。
SAXNotSupportedException - 当 XMLReader 能够识别属性名称但却不能设置请求的值时。

setEntityResolver

void setEntityResolver(EntityResolver resolver)
允许应用程序注册实体分析器。

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

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

参数:
resolver - 实体解析器。
另请参见:
getEntityResolver()

getEntityResolver

EntityResolver getEntityResolver()
返回当前的实体解析器。

返回:
当前的实体解析器,如果尚未注册,则返回 null。
另请参见:
setEntityResolver(org.xml.sax.EntityResolver)

setDTDHandler

void setDTDHandler(DTDHandler handler)
允许应用程序注册 DTD 事件处理程序。

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

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

参数:
handler - DTD 处理程序。
另请参见:
getDTDHandler()