public interface LexicalHandler
org.xml.sax.ext.LexicalHandler |
Known Indirect Subclasses |
用于词汇事件的SAX2扩展处理程序。
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.
这是SAX2的可选扩展处理程序,用于提供有关XML文档的词汇信息,例如注释和CDATA部分边界。 XML读取器不需要识别该处理程序,它不是仅核心SAX2分布的一部分。
词汇处理程序中的事件适用于整个文档,而不仅仅适用于文档元素,所有词汇处理程序事件必须出现在内容处理程序的startDocument和endDocument事件之间。
要为XML阅读器设置LexicalHandler,请使用属性名称为http://xml.org/sax/properties/lexical-handler
的setProperty
方法和实现此接口(或null)的对象作为值。 如果读者不报告词汇事件,当您尝试注册处理程序时,它会抛出SAXNotRecognizedException
。
Public methods |
|
---|---|
abstract void |
comment(char[] ch, int start, int length) 在文档的任何位置报告XML注释。 |
abstract void |
endCDATA() 报告CDATA部分的结尾。 |
abstract void |
endDTD() 报告DTD声明的结束。 |
abstract void |
endEntity(String name) 报告实体的结束。 |
abstract void |
startCDATA() 报告CDATA部分的开始。 |
abstract void |
startDTD(String name, String publicId, String systemId) 报告DTD声明的开始(如果有的话)。 |
abstract void |
startEntity(String name) 报告一些内部和外部XML实体的开始。 |
void comment (char[] ch, int start, int length)
在文档的任何位置报告XML注释。
此回调将用于文档元素内部或外部的注释,包括外部DTD子集(如果已阅读)中的注释。 DTD中的注释必须正确嵌套在start / endDTD和start / endEntity事件中(如果使用的话)。
Parameters | |
---|---|
ch |
char : An array holding the characters in the comment. |
start |
int : The starting position in the array. |
length |
int : The number of characters to use from the array. |
Throws | |
---|---|
SAXException |
The application may raise an exception. |
void endCDATA ()
报告CDATA部分的结尾。
Throws | |
---|---|
SAXException |
The application may raise an exception. |
也可以看看:
void endDTD ()
报告DTD声明的结束。
此方法旨在报告DOCTYPE声明的结束; 如果文档没有DOCTYPE声明,则不会调用此方法。
Throws | |
---|---|
SAXException |
The application may raise an exception. |
void endEntity (String name)
报告实体的结束。
Parameters | |
---|---|
name |
String : The name of the entity that is ending. |
Throws | |
---|---|
SAXException |
The application may raise an exception. |
也可以看看:
void startCDATA ()
报告CDATA部分的开始。
CDATA部分的内容将通过常规characters
事件进行报告; 此事件仅用于报告边界。
Throws | |
---|---|
SAXException |
The application may raise an exception. |
也可以看看:
void startDTD (String name, String publicId, String systemId)
报告DTD声明的开始(如果有的话)。
此方法旨在报告DOCTYPE声明的开始; 如果文档没有DOCTYPE声明,则不会调用此方法。
通过DTDHandler
或DeclHandler
事件报告的所有声明必须出现在startDTD和endDTD
事件之间。 假定声明属于内部DTD子集,除非它们出现在startEntity
和endEntity
事件之间。 来自DTD的注释和处理指令也应该以startDTD和endDTD事件之间的原始顺序(逻辑)出现; 但是,它们不需要出现在相对于DTDHandler或DeclHandler事件的正确位置。
请注意,start / endDTD事件将出现在ContentHandler的start / endDocument事件中,并且在第一个 startElement
事件之前。
Parameters | |
---|---|
name |
String : The document type name. |
publicId |
String : The declared public identifier for the external DTD subset, or null if none was declared. |
systemId |
String : The declared system identifier for the external DTD subset, or null if none was declared. (Note that this is not resolved against the document base URI.) |
Throws | |
---|---|
SAXException |
The application may raise an exception. |
也可以看看:
void startEntity (String name)
报告一些内部和外部XML实体的开始。
参数实体(包括外部DTD子集)的报告是可选的,报告LexicalHandler事件的SAX2驱动程序可能不会实现它; 您可以使用http://xml.org/sax/features/lexical-handler/parameter-entities
功能来查询或控制参数实体的报告。
常规实体以其常规名称报告,参数实体在其名称前加'%',而外部DTD子集具有伪实体名称“[dtd]”。
当SAX2驱动程序提供这些事件时,所有其他事件必须正确嵌套在开始/结束实体事件中。 没有额外的要求DeclHandler
或DTDHandler
事件被正确命令。
请注意,跳过的实体将通过 skippedEntity
事件报告,该事件是ContentHandler界面的一部分。
由于SAX使用的流式事件模型,在任何情况下都不能报告一些实体边界:
这些将被默默扩大,并没有指出原始实体边界在哪里。
还要注意,字符引用的边界(它们实际上并不是真正的实体)不会被报告。
所有开始/结束实体事件必须正确嵌套。
Parameters | |
---|---|
name |
String : The name of the entity. If it is a parameter entity, the name will begin with '%', and if it is the external DTD subset, it will be "[dtd]". |
Throws | |
---|---|
SAXException |
The application may raise an exception. |