所有类


org.xml.sax.ext
类 DefaultHandler2

java.lang.Object
  继承者 org.xml.sax.helpers.DefaultHandler
      继承者 org.xml.sax.ext.DefaultHandler2
所有已实现的接口:
ContentHandler, DTDHandler, EntityResolver, ErrorHandler, DeclHandler, EntityResolver2, LexicalHandler

public class DefaultHandler2
   
   
   
   
     
     
extends DefaultHandler
implements LexicalHandler, DeclHandler, EntityResolver2

此类扩展 SAX2 基本处理程序类,以支持 SAX2 LexicalHandlerDeclHandlerEntityResolver2 扩展。除了重写原始 SAX1 resolveEntity() 方法之外,仅返回添加的处理程序方法。子类可能在逐个方法的基础上重写每个事情。

此模块(包括源代码和文档)在公共域中,同时 没有担保

注:此类可能仍知道 ContentHandler.setDocumentLocator() 调用可能被传递一个 Locator2 对象,并且 ContentHandler.startElement() 调用被传递一个 Attributes2 对象。

从以下版本开始:
SAX 2.0 (extensions 1.1 alpha)

构造方法摘要
DefaultHandler2()
          构造忽略所有解析事件的处理程序。
 
方法摘要
 void attributeDecl(String eName, String aName, String type, String mode, String value)
          报告属性类型声明。
 void comment(char[] ch, int start, int length)
          报告文档的任何位置的 XML 注释。
 void elementDecl(String name, String model)
          报告元素类型声明。
 void endCDATA()
          报告 CDATA 节的结束。
 void endDTD()
          报告 DTD 声明的结束。
 void endEntity(String name)
          报告实体的结束。
 void externalEntityDecl(String name, String publicId, String systemId)
          报告解析的外部实体声明。
 InputSource getExternalSubset(String name, String baseURI)
          告知解析器如果在文档文本中没有声明任何外部子集,则不应使用任何外部子集。
 void internalEntityDecl(String name, String value)
          报告内部实体声明。
 InputSource resolveEntity(String publicId, String systemId)
          使用 null 实体名称和基 URI 调用 EntityResolver2.resolveEntity()
 InputSource resolveEntity(String name, String publicId, String baseURI, String systemId)
          告知解析器根据 baseURI 解析 systemId,并从产生的绝对 URI 读取实体文本。
 void startCDATA()
          报告 CDATA 节的开始。
 void startDTD(String name, String publicId, String systemId)
          报告 DTD 声明的开始(如果存在)。
 void startEntity(String name)
          报告一些内部和外部 XML 实体的开始。
 
从类 org.xml.sax.helpers.DefaultHandler 继承的方法
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

DefaultHandler2

public DefaultHandler2()
构造忽略所有解析事件的处理程序。

方法详细信息

startCDATA

public void startCDATA()
                throws SAXException
从接口 LexicalHandler 复制的描述
报告 CDATA 节的开始。

通过常规 characters 事件报告 CDATA 节的内容;此事件仅用于报告边界。

指定者:
接口 LexicalHandler 中的 startCDATA
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.endCDATA()

endCDATA

public void endCDATA()
              throws SAXException
从接口 LexicalHandler 复制的描述
报告 CDATA 节的结束。

指定者:
接口 LexicalHandler 中的 endCDATA
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.startCDATA()

startDTD

public void startDTD(String name,
                     String publicId,
                     String systemId)
              throws SAXException
从接口 LexicalHandler 复制的描述
报告 DTD 声明的开始(如果存在)。

此方法主要用于报告 DOCTYPE 声明的开始;如果文档没有任何 DOCTYPE 声明,则不调用此方法。

通过 DTDHandlerDeclHandler 事件报告的所有声明必须在 startDTD 和 endDTD 事件之间出现。可以假设声明属于内部 DTD 子集,除非它们在 startEntityendEntity 事件之间出现。也应该在 startDTD 和 endDTD 事件之间,以事件出现的原始顺序(逻辑)报告 DTD 的注释和处理指令;但是,它们不需要出现在相对于 DTDHandler 或 DeclHandler 事件的正确位置。

注意,start/endDTD 事件将出现在 ContentHandler 的 start/endDocument 事件中,并在第一个 startElement 事件之前。

指定者:
接口 LexicalHandler 中的 startDTD
参数:
name - 文档类型名称。
publicId - 用于外部 DTD 子集的已声明的公共标识符,如果没有声明,则为 null。
systemId - 用于外部 DTD 子集的已声明的系统公共标识符,如果没有声明,则为 null。(注意,这不能根据文档基 URI 解析)
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.endDTD(), LexicalHandler.startEntity(java.lang.String)

endDTD

public void endDTD()
            throws SAXException
从接口 LexicalHandler 复制的描述
报告 DTD 声明的结束。

此方法主要用于报告 DOCTYPE 声明的结束;如果文档没有任何 DOCTYPE 声明,则不调用此方法。

指定者:
接口 LexicalHandler 中的 endDTD
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.startDTD(java.lang.String, java.lang.String, java.lang.String)

startEntity

public void startEntity(String name)
                 throws SAXException
从接口 LexicalHandler 复制的描述
报告一些内部和外部 XML 实体的开始。

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

使用其正规名称报告常规实体,参数实体具有置于其名称前的 "%",并且外部 DTD 子集具有伪实体名 "[dtd]"。

在 SAX2 驱动程序提供这些事件时,所有其他事件必须在开始/结束实体事件中正确嵌套。不存在对来自 DeclHandlerDTDHandler 的事件进行正确排序的 附加要求。

注意,跳过的实体将通过 skippedEntity 事件(是 ContentHandler 接口的一部分)报告。

由于 SAX 使用的流事件模型,不能在任何环境下报告某些实体边界:

  • 属性值中的常规实体
  • 声明中的参数实体

将默认扩展上述实体,而不指示原始实体边界的位置。

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

必须正确嵌套所有 start/endEntity 事件。

指定者:
接口 LexicalHandler 中的 startEntity
参数:
name - 实体的名称。如果是参数实体,则名称将以 "%" 开头,如果是外部 DTD 子集,则将是 "[dtd]"。
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.endEntity(java.lang.String), DeclHandler.internalEntityDecl(java.lang.String, java.lang.String), DeclHandler.externalEntityDecl(java.lang.String, java.lang.String, java.lang.String)

endEntity

public void endEntity(String name)
               throws SAXException
从接口 LexicalHandler 复制的描述
报告实体的结束。

指定者:
接口 LexicalHandler 中的 endEntity
参数:
name - 正在结束的实体名称。
抛出:
SAXException - 应用程序可能引发一个异常。
另请参见:
LexicalHandler.startEntity(java.lang.String)

comment

public void comment(char[] ch,
                    int start,
                    int length)
             throws SAXException
从接口 LexicalHandler 复制的描述
报告文档的任何位置的 XML 注释。

此回调将用于文档元素内外的注释,包括外部 DTD 子集中的注释(如果读取)。必须在 start/endDTD 和 start/endEntity 事件内部正确嵌套 DTD 中的注释(如果已使用)。

指定者:
接口 LexicalHandler 中的 comment
参数:
ch - 保存注释中的字符的数组。
start - 数组中的开始位置。
length - 使用的数组中的字符数。
抛出:
SAXException - 应用程序可能引发一个异常。

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部