- 所有已实现的接口:
-
ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
,DeclHandler
,EntityResolver2
,LexicalHandler
LexicalHandler
、DeclHandler
和EntityResolver2
扩展。除了覆盖原始的SAX1resolveEntity()
方法外,添加的处理程序方法只是返回。子类可以逐个方法地覆盖所有内容。
注意: 该类可能会了解到ContentHandler.setDocumentLocator()调用可能会传递一个Locator2
对象,以及ContentHandler.startElement()调用可能会传递一个Attributes2
对象。
- 自版本:
- 1.5, SAX 2.0 (扩展 1.1 alpha)
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
报告属性类型声明。void
comment
(char[] ch, int start, int length) 报告文档中的任何XML注释。void
elementDecl
(String name, String model) 报告元素类型声明。void
endCDATA()
报告CDATA部分的结束。void
endDTD()
报告DTD声明的结束。void
报告实体的结束。void
externalEntityDecl
(String name, String publicId, String systemId) 报告解析的外部实体声明。getExternalSubset
(String name, String baseURI) 告诉解析器,如果文档文本中没有声明外部子集,则不应使用任何外部子集。void
internalEntityDecl
(String name, String value) 报告内部实体声明。resolveEntity
(String publicId, String systemId) 使用空实体名称和基本URI调用EntityResolver2.resolveEntity()
。resolveEntity
(String name, String publicId, String baseURI, String systemId) 告诉解析器根据基本URI解析systemId,并从结果的绝对URI中读取实体文本。void
报告CDATA部分的开始。void
报告DTD声明的开始,如果有的话。void
startEntity
(String name) 报告一些内部和外部XML实体的开始。Methods declared in class org.xml.sax.helpers.DefaultHandler
characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, processingInstruction, setDocumentLocator, skippedEntity, startDocument, startElement, startPrefixMapping, unparsedEntityDecl, warning
Methods declared in class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods declared in interface org.xml.sax.ContentHandler
declaration
-
Constructor Details
-
DefaultHandler2
public DefaultHandler2()构造一个忽略所有解析事件的处理程序。
-
-
Method Details
-
startCDATA
从接口复制的描述:LexicalHandler
报告CDATA部分的开始。CDATA部分的内容将通过常规的
characters
事件报告;此事件仅用于报告边界。- 指定者:
-
startCDATA
在接口LexicalHandler
- 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
endCDATA
从接口复制的描述:LexicalHandler
报告CDATA部分的结束。- 指定者:
-
endCDATA
在接口LexicalHandler
- 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
startDTD
从接口复制的描述:LexicalHandler
报告DTD声明的开始,如果有的话。此方法旨在报告DOCTYPE声明的开始;如果文档没有DOCTYPE声明,则不会调用此方法。
通过
DTDHandler
或DeclHandler
事件报告的所有声明必须出现在startDTD和endDTD
事件之间。假定声明属于内部DTD子集,除非它们出现在startEntity
和endEntity
事件之间。DTD中的注释和处理指令也应在startDTD和endDTD事件之间按照它们的(逻辑)出现顺序报告;但是,它们不需要按照正确的顺序相对于DTDHandler或DeclHandler事件出现。请注意,start/endDTD事件将出现在ContentHandler的start/endDocument事件中,并在第一个
startElement
事件之前。- 指定者:
-
startDTD
在接口LexicalHandler
- 参数:
-
name
- 文档类型名称。 -
publicId
- 外部DTD子集的声明公共标识符,如果没有声明则为null。 -
systemId
- 外部DTD子集的声明系统标识符,如果没有声明则为null。(请注意,这不会根据文档基本URI解析。) - 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
endDTD
从接口复制的描述:LexicalHandler
报告DTD声明的结束。此方法旨在报告DOCTYPE声明的结束;如果文档没有DOCTYPE声明,则不会调用此方法。
- 指定者:
-
endDTD
在接口LexicalHandler
- 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
startEntity
从接口复制的描述:LexicalHandler
报告一些内部和外部XML实体的开始。参数实体(包括外部DTD子集)的报告是可选的,报告LexicalHandler事件的SAX2驱动程序可能不实现它;您可以使用
http://xml.org/sax/features/lexical-handler/parameter-entities
功能来查询或控制参数实体的报告。一般实体使用其常规名称报告,参数实体的名称前面有'%',外部DTD子集的伪实体名称为"[dtd]"。
当SAX2驱动程序提供这些事件时,所有其他事件必须正确嵌套在start/end实体事件内。没有额外要求要求来自
DeclHandler
或DTDHandler
的事件必须正确排序。请注意,跳过的实体将通过
skippedEntity
事件报告,这是ContentHandler接口的一部分。由于SAX使用的流式事件模型,某些实体边界无论如何都无法报告:
- 属性值中的一般实体
- 声明中的参数实体
这些将被静默扩展,不会指示原始实体边界在哪里。
还要注意,字符引用的边界(实际上并不是实体)也不会报告。
所有start/endEntity事件必须正确嵌套。
- 指定者:
-
startEntity
在接口LexicalHandler
中 - 参数:
-
name
- 实体的名称。如果是参数实体,名称将以'%'开头,如果是外部DTD子集,名称将是"[dtd]"。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
endEntity
从接口复制的描述:LexicalHandler
报告实体的结束。- 指定者:
-
endEntity
在接口LexicalHandler
中 - 参数:
-
name
- 正在结束的实体的名称。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
comment
从接口复制的描述:LexicalHandler
报告文档中的任何位置的XML注释。此回调将用于文档元素内部或外部的注释,包括外部DTD子集中的注释(如果已读取)。 DTD中的注释必须正确嵌套在start/endDTD和start/endEntity事件中(如果使用)。
- 指定者:
-
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"后跟一个空格,后跟一个删除所有空格的括号化令牌组。
值将是向应用程序报告的值,经过适当的规范化,并展开实体和字符引用。
- 指定者:
-
attributeDecl
在接口DeclHandler
中 - 参数:
-
eName
- 关联元素的名称。 -
aName
- 属性的名称。 -
type
- 表示属性类型的字符串。 -
mode
- 表示属性默认模式("#IMPLIED"、"#REQUIRED"或"#FIXED")的字符串,如果没有适用,则为null。 -
value
- 表示属性的默认值的字符串,如果没有则为null。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。
-
elementDecl
从接口复制的描述:DeclHandler
报告元素类型声明。内容模型将由字符串"EMPTY"、字符串"ANY"或括号组成,可选地后跟出现指示符。模型将被规范化,以便所有参数实体都完全解析,并删除所有空格,并包括括号。其他规范化(例如删除冗余括号或简化出现指示符)由解析器自行决定。
- 指定者:
-
elementDecl
在接口DeclHandler
中 - 参数:
-
name
- 元素类型名称。 -
model
- 作为规范化字符串的内容模型。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。
-
externalEntityDecl
从接口复制的描述:DeclHandler
报告解析的外部实体声明。仅报告每个实体的有效(第一个)声明。
如果系统标识符是URL,则解析器必须在将其传递给应用程序之前完全解析它。
- 指定者:
-
externalEntityDecl
在接口DeclHandler
中 - 参数:
-
name
- 实体的名称。如果是参数实体,名称将以'%'开头。 -
publicId
- 实体的公共标识符,如果没有给出则为null。 -
systemId
- 实体的系统标识符。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
internalEntityDecl
从接口复制的描述:DeclHandler
报告内部实体声明。仅报告每个实体的有效(第一个)声明。值中的所有参数实体将被展开,但一般实体不会。
- 指定者:
-
internalEntityDecl
在接口DeclHandler
中 - 参数:
-
name
- 实体的名称。如果是参数实体,名称将以'%'开头。 -
value
- 实体的替换文本。 - 抛出:
-
SAXException
- 应用程序可能会引发异常。 - 参见:
-
getExternalSubset
告诉解析器,如果文档文本中没有声明外部子集,则不应使用任何外部子集。- 指定者:
-
getExternalSubset
在接口EntityResolver2
中 - 参数:
-
name
- 标识文档根元素。此名称来自DOCTYPE声明(如果有)或实际根元素。 -
baseURI
- 文档的基本URI,用作选择外部子集的附加提示。这始终是绝对URI,除非为null,因为XMLReader没有给定一个带有绝对URI的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()
方法被覆盖以调用此方法,因此有时可能会使用空的name和baseURI以及已经绝对化的systemId来调用此方法。- 指定者:
-
resolveEntity
在接口EntityResolver2
- 参数:
-
name
- 标识正在解析的外部实体。对于外部子集,可以是"[dtd]",或以"%"开头表示参数实体,或者是一般实体的名称。当被SAX2解析器调用时,永远不会为空。 -
publicId
- 外部实体的公共标识符(根据XML规范要求进行了规范化),如果没有提供,则为null。 -
baseURI
- 相对于其解释相对systemIDs的URI。这始终是绝对URI,除非为null(可能是因为XMLReader没有提供一个)。该URI由XML规范定义为与开始相关声明的"<"相关联的URI。 -
systemId
- 正在引用的外部实体的系统标识符;可以是相对或绝对URI。当被SAX2解析器调用时,永远不会为空;只有声明的实体和任何外部子集才会被这种解析器解析。 - 返回:
- 描述解析器要使用的新输入源的InputSource对象。返回null会指示解析器根据baseURI解析系统ID并打开到生成的URI的连接。
- 抛出:
-
SAXException
- 任何SAX异常,可能包装另一个异常。 -
IOException
- 可能表示无法创建新的InputStream或Reader,或者是非法URL。
-
resolveEntity
调用带有空实体名称和基本URI的EntityResolver2.resolveEntity()
。您只需要重写该方法以使用此类。- 指定者:
-
resolveEntity
在接口EntityResolver
- 覆盖:
-
resolveEntity
在类DefaultHandler
- 参数:
-
publicId
- 公共标识符,如果没有可用则为null。 -
systemId
- XML文档中提供的系统标识符。 - 返回:
- 新的输入源,或null以要求默认行为。
- 抛出:
-
SAXException
- 任何SAX异常,可能包装另一个异常。 -
IOException
- 如果设置新输入源时出现错误。 - 参见:
-