-
- All Known Subinterfaces:
-
TransformerHandler
- 所有已知实现类:
-
DefaultHandler2
public interface LexicalHandler
用于词汇事件的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
。- 从以下版本开始:
- 1.4,SAX 2.0(扩展1.0)
-
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 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实体的开头。
-
-
-
方法详细信息
-
startDTD
void startDTD(String name, String publicId, String systemId) throws SAXException
报告DTD声明的开始(如果有)。此方法旨在报告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)
-
endDTD
void endDTD() throws SAXException
报告DTD声明的结束。此方法旨在报告DOCTYPE声明的结束; 如果文档没有DOCTYPE声明,则不会调用此方法。
- 异常
-
SAXException
- 申请可能会引发例外。 - 另请参见:
-
startDTD(java.lang.String, java.lang.String, java.lang.String)
-
startEntity
void startEntity(String name) throws SAXException
报告一些内部和外部XML实体的开头。参数实体(包括外部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)
-
endEntity
void endEntity(String name) throws SAXException
报告实体的结束。- 参数
-
name
- 结束的实体的名称。 - 异常
-
SAXException
- 该应用程序可能会引发异常。 - 另请参见:
-
startEntity(java.lang.String)
-
startCDATA
void startCDATA() throws SAXException
报告CDATA部分的开头。CDATA部分的内容将通过常规
characters
事件报告; 此事件仅用于报告边界。- 异常
-
SAXException
- 该应用程序可能引发异常。 - 另请参见:
-
endCDATA()
-
endCDATA
void endCDATA() throws SAXException
报告CDATA部分的结尾。- 异常
-
SAXException
- 该应用程序可能引发异常。 - 另请参见:
-
startCDATA()
-
comment
void comment(char[] ch, int start, int length) throws SAXException
在文档中的任何位置报告XML注释。此回调将用于文档元素内部或外部的注释,包括外部DTD子集中的注释(如果已读取)。 DTD中的注释必须正确嵌套在start / endDTD和start / endEntity事件(如果使用)中。
- 参数
-
ch
- 包含注释中字符的数组。 -
start
- 数组中的起始位置。 -
length
- 从阵列中使用的字符数。 - 异常
-
SAXException
- 该应用程序可能会引发异常。
-
-