|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
public interface LexicalHandler
用于词法事件的 SAX2 扩展处理程序。
此模块(包括源代码和文档)在公共域中,同时 没有担保。有关更多信息,请参阅http://www.saxproject.org。
这是 SAX2 的可选扩展处理程序,以提供关于 XML 文档的词汇信息,例如,注释和 CDATA 节边界。不需要 XML 阅读器识别此处理程序,它不是仅核心 SAX2 分发的一部分。
词汇处理程序中的事件应用于整个文档,不是仅应用于文档元素,并且所有词汇处理程序事件必须在内容处理程序的 startDocument 和 endDocument 事件之间出现。
要为 XML 阅读器设置 LexicalHandler,使用带有属性名称 http://xml.org/sax/properties/lexical-handler
的 setProperty
方法以及将此接口(或 null)实现为该值的对象。如果阅读器不报告词汇事件,则尝试注册处理程序时,它将抛出 SAXNotRecognizedException
。
方法摘要 | |
---|---|
void |
comment(char[] ch,
int start,
int length)
报告文档的任何位置的 XML 注释。 |
void |
endCDATA()
报告 CDATA 节的结束。 |
void |
endDTD()
报告 DTD 声明的结束。 |
void |
endEntity(String name)
报告实体的结束。 |
void |
startCDATA()
报告 CDATA 节的开始。 |
void |
startDTD(String name,
String publicId,
String systemId)
报告 DTD 声明的开始(如果存在)。 |
void |
startEntity(String name)
报告一些内部和外部 XML 实体的开始。 |
方法详细信息 |
---|
void startDTD(String name, String publicId, String systemId) throws SAXException
此方法主要用于报告 DOCTYPE 声明的开始;如果文档没有任何 DOCTYPE 声明,则不调用此方法。
通过 DTDHandler
或 DeclHandler
事件报告的所有声明必须在 startDTD 和 endDTD
事件之间出现。可以假设声明属于内部 DTD 子集,除非它们在 startEntity
和 endEntity
事件之间出现。也应该在 startDTD 和 endDTD 事件之间,以事件出现的原始顺序(逻辑)报告 DTD 的注释和处理指令;但是,它们不需要出现在相对于 DTDHandler 或 DeclHandler 事件的正确位置。
注意,start/endDTD 事件将出现在 ContentHandler 的 start/endDocument 事件中,并在第一个 startElement
事件之前。
name
- 文档类型名称。publicId
- 用于外部 DTD 子集的已声明的公共标识符,如果没有声明,则为 null。systemId
- 用于外部 DTD 子集的已声明的系统公共标识符,如果没有声明,则为 null。(注意,这不能根据文档基 URI 解析)
SAXException
- 应用程序可能引发一个异常。endDTD()
,
startEntity(java.lang.String)
void endDTD() throws SAXException
此方法主要用于报告 DOCTYPE 声明的结束;如果文档没有任何 DOCTYPE 声明,则不调用此方法。
SAXException
- 应用程序可能引发一个异常。startDTD(java.lang.String, java.lang.String, java.lang.String)
void startEntity(String name) throws SAXException
参数实体(包括外部 DTD 子集)的报告是可选的,报告 LexicalHandler 事件的 SAX2 驱动程序不能实现它;可以使用 http://xml.org/sax/features/lexical-handler/parameter-entities
功能查询或控制参数实体的报告。
使用其正规名称报告常规实体,参数实体具有置于其名称前的 "%",并且外部 DTD 子集具有伪实体名 "[dtd]"。
在 SAX2 驱动程序提供这些事件时,所有其他事件必须在开始/结束实体事件中正确嵌套。不存在对来自 DeclHandler
或 DTDHandler
的事件进行正确排序的 附加要求。
注意,跳过的实体将通过 skippedEntity
事件(是 ContentHandler 接口的一部分)报告。
由于 SAX 使用的流事件模型,不能在任何环境下报告某些实体边界:
将默认扩展上述实体,而不指示原始实体边界的位置。
还要注意,不报告字符引用(实际上它不是实体)的边界。
必须正确嵌套所有 start/endEntity 事件。
name
- 实体的名称。如果是参数实体,则名称将以 "%" 开头,如果是外部 DTD 子集,则将是 "[dtd]"。
SAXException
- 应用程序可能引发一个异常。endEntity(java.lang.String)
,
DeclHandler.internalEntityDecl(java.lang.String, java.lang.String)
,
DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)
void endEntity(String name) throws SAXException
name
- 正在结束的实体名称。
SAXException
- 应用程序可能引发一个异常。startEntity(java.lang.String)
void startCDATA() throws SAXException
通过常规 characters
事件报告 CDATA 节的内容;此事件仅用于报告边界。
SAXException
- 应用程序可能引发一个异常。endCDATA()
void endCDATA() throws SAXException
SAXException
- 应用程序可能引发一个异常。startCDATA()
void comment(char[] ch, int start, int length) throws SAXException
此回调将用于文档元素内外的注释,包括外部 DTD 子集中的注释(如果读取)。必须在 start/endDTD 和 start/endEntity 事件内部正确嵌套 DTD 中的注释(如果已使用)。
ch
- 保存注释中的字符的数组。start
- 数组中的开始位置。length
- 使用的数组中的字符数。
SAXException
- 应用程序可能引发一个异常。
|
JavaTM Platform Standard Ed. 6 |
|||||||||
上一个类 下一个类 | 框架 无框架 | |||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
版权所有 2007 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策。