- 所有已知的实现类:
DefaultHandler2
这是 SAX2 的可选扩展处理程序,用于提供有关 XML 文档中 DTD 声明的更完整信息。 XML 阅读器不需要识别此处理程序,并且它不是仅核心 SAX2 分发的一部分。
请注意,与数据相关的 DTD 声明(未解析的实体和符号)已通过 DTDHandler
接口报告。
如果您将声明处理程序与词法处理程序一起使用,则所有事件都将发生在 startDTD
和 endDTD
事件之间。
要为 XML 读取器设置 DeclHandler,请使用带有属性名称 http://xml.org/sax/properties/declaration-handler
的 setProperty
方法和一个实现此接口(或 null)的对象作为值。如果阅读器不报告声明事件,它会在您尝试注册处理程序时抛出 SAXNotRecognizedException
。
- 自从:
- 1.4、SAX 2.0(扩展 1.0)
-
方法总结
修饰符和类型方法描述void
报告属性类型声明。void
elementDecl
(String name, String model) 报告元素类型声明。void
externalEntityDecl
(String name, String publicId, String systemId) 报告已解析的外部实体声明。void
internalEntityDecl
(String name, String value) 报告内部实体声明。
-
方法详情
-
elementDecl
报告元素类型声明。内容模型将由字符串“EMPTY”、字符串“ANY”或带括号的组组成,后跟一个出现指示符(可选)。模型将被规范化,以便所有参数实体都被完全解析并删除所有空格,并将包括封闭的括号。其他规范化(例如删除多余的括号或简化出现指示符)由解析器自行决定。
- 参数:
name
- 元素类型名称。model
- 作为规范化字符串的内容模型。- 抛出:
SAXException
- 应用程序可能会引发异常。
-
attributeDecl
void attributeDecl(String eName, String aName, String type, String mode, String value) throws SAXException 报告属性类型声明。只会报告属性的有效(第一个)声明。类型将是字符串“CDATA”、“ID”、“IDREF”、“IDREFS”、“NMTOKEN”、“NMTOKENS”、“ENTITY”、“ENTITIES”中的一种,带分隔符“|”的括号标记组并删除所有空格,或者单词“NOTATION”后跟一个空格,然后是括号内的标记组,并删除所有空格。
该值将是向应用程序报告的值,经过适当规范化并扩展了实体和字符引用。
- 参数:
eName
- 关联元素的名称。aName
- 属性的名称。type
- 表示属性类型的字符串。mode
- 表示属性默认模式(“#IMPLIED”、“#REQUIRED”或“#FIXED”)的字符串,如果这些都不适用,则为 null。value
- 表示属性默认值的字符串,如果没有则为 null。- 抛出:
SAXException
- 应用程序可能会引发异常。
-
internalEntityDecl
报告内部实体声明。仅报告每个实体的有效(第一个)声明。值中的所有参数实体都会展开,但一般实体不会。
- 参数:
name
- 实体的名称。如果它是参数实体,名称将以“%”开头。value
- 实体的替换文本。- 抛出:
SAXException
- 应用程序可能会引发异常。- 参见:
-
externalEntityDecl
报告已解析的外部实体声明。仅报告每个实体的有效(第一个)声明。
如果系统标识符是一个 URL,解析器必须在将它传递给应用程序之前完全解析它。
- 参数:
name
- 实体的名称。如果它是参数实体,名称将以“%”开头。publicId
- 实体的公共标识符,如果没有给出则为 null。systemId
- 实体的系统标识符。- 抛出:
SAXException
- 应用程序可能会引发异常。- 参见:
-