Module  java.xml
软件包  org.xml.sax.ext

Class DefaultHandler2

    • 构造方法详细信息

      • DefaultHandler2

        public DefaultHandler2​()
        构造一个忽略所有解析事件的处理程序。
    • 方法详细信息

      • startDTD

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

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

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

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

        Specified by:
        startDTD在接口 LexicalHandler
        参数
        name - 文档类型名称。
        publicId - 外部DTD子集的已声明的公共标识符,如果未声明,则为null。
        systemId - 外部DTD子集的声明的系统标识符,如果没有声明,则为null。 (请注意,这不是针对文档基础URI解决的。)
        异常
        SAXException - 应用程序可能会引发异常。
        另请参见:
        LexicalHandler.endDTD()LexicalHandler.startEntity(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事件必须正确嵌套。

        Specified by:
        startEntity在接口 LexicalHandler
        参数
        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)
      • comment

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

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

        Specified by:
        comment在接口 LexicalHandler
        参数
        ch - 在注释中保存字符的数组。
        start - 数组中的起始位置。
        length - 要从数组使用的字符数。
        异常
        SAXException - 应用程序可能会引发异常。
      • attributeDecl

        public void attributeDecl​(String eName,
                                  String aName,
                                  String type,
                                  String mode,
                                  String value)
                           throws SAXException
        描述从接口DeclHandler复制
        报告属性类型声明。

        只会报告属性的有效(第一)声明。 该类型将是字符串“CDATA”,“ID”,“IDREF”,“IDREFS”,“NMTOKEN”,“NMTOKENS”,“ENTITY”,“ENTITIES”,带有分隔符“|”的括号符号组 并删除所有空格,或者单词“NOTATION”后跟一个空格,后跟一个带有所有空格的括号符号组。

        该值将是应用程序报告的值,适当地规范化,扩展了实体和字符引用。

        Specified by:
        attributeDecl接口 DeclHandler
        参数
        eName - 关联元素的名称。
        aName - 属性的名称。
        type - 表示属性类型的字符串。
        mode - 表示属性默认模式(“#IMPLIED”,“#REQUIRED”或“#FIXED”)的字符串,如果不适用,则为空。
        value - 表示属性默认值的字符串,如果没有,则返回null。
        异常
        SAXException - 应用程序可能会引发异常。
      • elementDecl

        public void elementDecl​(String name,
                                String model)
                         throws SAXException
        描述从接口DeclHandler复制
        报告元素类型声明。

        内容模型将由字符串“EMPTY”,字符串“ANY”或括号组组成,可选地后跟出现指示符。 模型将被归一化,以便所有参数实体完全解析,并且所有空格都被删除,并且将包括括号。 其他规范化(如删除冗余括号或简化事件指标)由解析器自行决定。

        Specified by:
        elementDecl在接口 DeclHandler
        参数
        name - 元素类型名称。
        model - 内容模型为标准化字符串。
        异常
        SAXException - 应用程序可能会引发异常。
      • getExternalSubset

        public InputSource getExternalSubset​(String name,
                                             String baseURI)
                                      throws SAXException,
                                             IOException
        告诉解析器,如果在文档文本中没有声明外部子集,则不应使用任何外部子集。
        Specified by:
        getExternalSubset在接口 EntityResolver2
        参数
        name - 标识文档根元素。 该名称来自DOCTYPE声明(如果可用)或实际根元素。
        baseURI - 文档的基本URI,作为选择外部子集的附加提示。 这总是一个绝对URI,除非它是null,因为XMLReader没有一个InputSource。
        结果
        描述要由解析器使用的新外部子集的InputSource对象,或null表示没有提供外部子集。
        异常
        SAXException - 任何SAX异常,可能包含另一个异常。
        IOException - 可能表示无法创建新的InputStream或Reader或非法URL。
      • resolveEntity

        public InputSource resolveEntity​(String name,
                                         String publicId,
                                         String baseURI,
                                         String systemId)
                                  throws SAXException,
                                         IOException
        告诉解析器根据baseURI解析systemId,并从该结果的绝对URI中读取实体文本。 请注意,由于旧的DefaultHandler.resolveEntity()方法被覆盖以调用此方法,有时可以使用null 名称baseURI调用此方法,并且将systemId已经绝对调用。
        Specified by:
        resolveEntity在接口 EntityResolver2
        参数
        name - 标识正在解析的外部实体。 外部子集的“[dtd]”或以“%”开头的名称表示参数实体,或者是一般实体的名称。 当SAX2解析器调用时,这从不为空。
        publicId - 引用的外部实体的公共标识符(按照XML规范的要求进行规范化),如果没有提供,则为null。
        baseURI - 相对于哪个相对的系统ID进行解释的URI。 这绝对是一个绝对URI,除非它是null(可能是因为XMLReader没有一个InputSource)。 该URI由XML规范定义为与“<”启动相关声明相关联的URI。
        systemId - 被引用的外部实体的系统标识符; 一个相对或绝对的URI。 当SAX2解析器调用时,这不会为空; 只有声明的实体和任何外部子集才能被这样的解析器解析。
        结果
        描述由解析器使用的新输入源的InputSource对象。 返回null指示解析器根据基本URI解析系统ID,并打开到结果URI的连接。
        异常
        SAXException - 任何SAX异常,可能包括另一个异常。
        IOException - 可能表示无法创建新的InputStream或Reader或非法URL。