org.xml.sax

接口
异常
此包提供了核心 SAX API。

请参见:
          描述

接口摘要
AttributeList 已过时。 此接口已经被 SAX2 Attributes 接口取代,后者包括名称空间支持。
Attributes 关于 XML 属性列表的接口。
ContentHandler 接收文档逻辑内容的通知。
DocumentHandler 已过时。 此接口已经被 SAX2 ContentHandler 接口取代,后者包括名称空间支持。
DTDHandler 接收基本的 DTD 相关的事件的通知。
EntityResolver 用于解析实体的基本接口。
ErrorHandler SAX 错误处理程序的基本接口。
Locator 用来将 SAX 事件与文档位置关联的接口。
Parser 已过时。 此接口已经被 SAX2 XMLReader 接口取代,后者包括名称空间支持。
XMLFilter 用于 XML 过滤器的接口。
XMLReader 用于使用回调读取 XML 文档的接口。
 

类摘要
HandlerBase 已过时。 此类可可以与不推荐使用的 DocumentHandler 接口一起工作。
InputSource XML 实体的单一输入源。
 

异常摘要
SAXException 封装一般的 SAX 错误或警告。
SAXNotRecognizedException 用于未识别的标识符的 Exception 类。
SAXNotSupportedException 用于不被支持的操作的 Exception 类。
SAXParseException 封装 XML 解析错误或警告。
 

软件包 org.xml.sax 的描述

此包提供了核心 SAX API。不推荐某些 SAX1 API 支持将名称空间感知性集成到新的应用程序设计当中和对现有的基础结构的维护当中。

有关 SAX 的更多信息,请参阅 www.saxproject.org

SAX2 标准功能标志

SAX2 的基本特征之一就是增加了可用来检查和在可能的情况下修改解析器模式(特别是验证之类的模式)的功能标志。由于这些功能用(绝对)URI 标识,所以任何人都可以定义此类功能。当前定义的标准功能 URI 在标识符(如 validation)之前有前缀 http://xml.org/sax/features/。可使用 setFeature 打开或关闭这些功能。这些标准标识符包括:

功能 ID 访问 默认值 描述
外部一般实体 读/写 未指定 报告此解析器是否处理外部一般实体;如果验证,则始终为 true。
外部参数实体 读/写 未指定 报告此解析器是否处理外部参数实体;如果验证,则始终为 true。
独立 (解析)只读,(不解析) 不适用 只可以在解析期间,完成 startDocument() 回调后进行检查;只读。如果文档在其 XML 声明中指定 standalone="yes",则该值为 true,否则为 false。
词法处理程序/参数实体 读/写 未指定 值 "true" 表示 LexicalHandler 将报告参数实体的开始和结束。
名称空间 读/写 true 值 "true" 表示名称空间 URI 和元素的无前缀本地名称以及属性名称可用。
名称空间前缀 读/写 false 值 "true" 表示 XML 限定名(带有前缀)和属性(包括 xmlns* 属性)可用。
resolve-dtd-uris 读/写 true 值 "true" 表示在报告之前将绝对化(与其基 URI 有关)声明中的系统 ID。(这是所有 SAX2 XML 解析器的默认行为。)值 "false" 表示不会绝对化这些 ID;解析器将从 Locator.getSystemId() 中提供基 URI。这适用于传入的系统 ID
  • DTDHandler.notationDecl()
  • DTDHandler.unparsedEntityDecl()
  • DeclHandler.externalEntityDecl()
不适用于不用来报告声明的 EntityResolver.resolveEntity(),也不适用于 LexicalHandler.startDTD(),后者已经提供了非绝对化的 URI。
字符串驻留 读/写 未指定 如果所有的 XML 名称(针对元素、前缀、属性、实体、表示法和本地名称)以及名称空间 URI 都通过使用 java.lang.String.intern 被驻留下来,则将具有值 "true"。这支持快速测试字符串常量是否相等/不等,而不是强制减慢对 String.equals() 的调用。
unicode 标准化检查 读/写 false 控制解析器是否报告 Unicode 标准化错误,“XML 1.1 Recommendation”的 2.13 节和附录 B 中描述了这一点。如果为 true,则使用 ErrorHandler.error() 回调报告 Unicode 标准化错误。此类错误本身并不是严重的(尽管显然其他与 Unicode 相关的错误可能是严重的错误)。
use-attributes2 只读 不可用 如果 ContentHandler.startElement() 中的由此解析器传递的 Attributes 对象实现了 org.xml.sax.ext.Attributes2 接口,则返回 "true"。该接口公开其他的与 DTD 相关的信息,例如属性是否在源文本中指定而不是是默认的。
use-locator2 只读 不可用 如果在 ContentHandler.setDocumentLocator() 中由此解析器传递的 Locator 对象实现了 org.xml.sax.ext.Locator2 接口,则返回 "true"。该接口公开其他的实体信息,例如所用的字符编码和 XML 版本。
use-entity-resolver2 读/写 true 如果为 setEntityResolver 提供实现 org.xml.sax.ext.EntityResolver2 接口的对象时,将使用这些这些新的方法,则返回 "true"。如果返回 "false" 则表示将不使用这些方法。
验证 读/写 未指定 控制解析器是否报告所有的有效性错误;如果为 true,则将读取所有的外部实体。
xmlns-uris 读/写 false 当设置 namespace-prefixes 功能时,控制解析器是否将名称空间声明属性视为在 http://www.w3.org/2000/xmlns/ 名称空间中。默认情况下,SAX2 遵守原始的 "Namespaces in XML" 推荐标准,该推荐标准明确规定此类属性不在任何名称空间中。将此可选标记设置为 "true" 能使 SAX2 事件遵守该推荐标准以后的向后兼容的版本,从而将这些属性置于名称空间中。
xml-1.1 只读 不适用 如果解析器既支持 XML 1.1 又支持 XML 1.0,则返回 "true"。如果解析器仅支持 XML 1.0,则返回 "false"。

要求支持 名称空间名称空间前缀 属性的默认值。对其他任何功能标志的支持是完全可选的。

对于不是由 SAX2 指定的默认值,每个 XMLReader 推荐标准都指定了其默认值,或可以选择不公开功能标志。否则除非在此指定,推荐标准可以支持改变这些标准功能标志的当前值(但在解析期间不可以)。

SAX2 标准处理程序和属性 ID

对于被描述为对象的解析器接口特征,将定义独立名称空间。此名称空间中的对象仍是由 URI 标识的,并且在诸如 lexical-handlerdom-node 之类的标识符之前,标准属性 URI 具有前缀 http://xml.org/sax/properties/。可使用 setProperty() 管理这些属性。这些标识符包括:

属性 ID 描述
declaration-handler 用来查看大多数 DTD 声明,但那些被视为词法(“document element name is ...”)或者对所有 SAX 解析器 (DTDHandler) 是强制性的声明除外。该对象必须实现 org.xml.sax.ext.DeclHandler
document-xml-version 只可以在解析期间、完成 startDocument() 回调后进行检查;只读。此属性是一个字符串常量,它描述了文档的实际 XML 版本,如 "1.0" 或 "1.1"。
dom-node 对于忽略其 parser.parse() 参数的 "DOM Walker" 样式解析器,这可以用来指定通过该解析器遍历的 DOM (子)树。该对象必须实现 org.w3c.dom.Node 接口。
lexical-handler 用来查看某些应用程序基本的语法事件:注释、CDATA 分隔符、选定的一般实体收录和 DTD(以及文档元素名称的声明)的开始与结尾。该对象必须实现 org.xml.sax.ext.LexicalHandler
xml-string 仅在解析器回调期间可读,这公开负责当前事件的字符的 TBS 存储块。

所有这些标准属性都是可选的;XMLReader 实现不必支持它们。