Most visited

Recently visited

Added in API level 1

LexicalHandler

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-handlersetProperty方法和实现此接口(或null)的对象作为值。 如果读者不报告词汇事件,当您尝试注册处理程序时,它会抛出SAXNotRecognizedException

Summary

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实体的开始。

Public methods

comment

Added in API level 1
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.

endCDATA

Added in API level 1
void endCDATA ()

报告CDATA部分的结尾。

Throws
SAXException The application may raise an exception.

也可以看看:

endDTD

Added in API level 1
void endDTD ()

报告DTD声明的结束。

此方法旨在报告DOCTYPE声明的结束; 如果文档没有DOCTYPE声明,则不会调用此方法。

Throws
SAXException The application may raise an exception.

也可以看看:

endEntity

Added in API level 1
void endEntity (String name)

报告实体的结束。

Parameters
name String: The name of the entity that is ending.
Throws
SAXException The application may raise an exception.

也可以看看:

startCDATA

Added in API level 1
void startCDATA ()

报告CDATA部分的开始。

CDATA部分的内容将通过常规characters事件进行报告; 此事件仅用于报告边界。

Throws
SAXException The application may raise an exception.

也可以看看:

startDTD

Added in API level 1
void startDTD (String name, 
                String publicId, 
                String systemId)

报告DTD声明的开始(如果有的话)。

此方法旨在报告DOCTYPE声明的开始; 如果文档没有DOCTYPE声明,则不会调用此方法。

通过DTDHandlerDeclHandler事件报告的所有声明必须出现在startDTD和endDTD事件之间。 假定声明属于内部DTD子集,除非它们出现在startEntityendEntity事件之间。 来自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.

也可以看看:

startEntity

Added in API level 1
void startEntity (String name)

报告一些内部和外部XML实体的开始。

参数实体(包括外部DTD子集)的报告是可选的,报告LexicalHandler事件的SAX2驱动程序可能不会实现它; 您可以使用http://xml.org/sax/features/lexical-handler/parameter-entities功能来查询或控制参数实体的报告。

常规实体以其常规名称报告,参数实体在其名称前加'%',而外部DTD子集具有伪实体名称“[dtd]”。

当SAX2驱动程序提供这些事件时,所有其他事件必须正确嵌套在开始/结束实体事件中。 没有额外的要求DeclHandlerDTDHandler事件被正确命令。

请注意,跳过的实体将通过 skippedEntity事件报告,该事件是ContentHandler界面的一部分。

由于SAX使用的流式事件模型,在任何情况下都不能报告一些实体边界:

  • general entities within attribute values
  • parameter entities within declarations

这些将被默默扩大,并没有指出原始实体边界在哪里。

还要注意,字符引用的边界(它们实际上并不是真正的实体)不会被报告。

所有开始/结束实体事件必须正确嵌套。

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.

也可以看看:

Hooray!