• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:16来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

s t a r t E l e m e n t 接收元素开始的通知
public void startElement( P a r s e r将在X M L文档中每个元素的开始处调用本方法;
String name, 对于每个s t a r t E l e m e n t ( )事件,都有相应的e n d E l e m e n t ( )事件(即使
AttributeList atts) 元素为空)。在相应的e n d E l e m e n t ( )事件之前,元素的所有内容都要
依次被报告
throws SAXException 如果元素名称有命名空间前缀,则名称中仍要保留该前缀。值得
注意的是,本方法提供的属性列表只包含有显式值的属性(指定了
属性值,或者有缺省的属性值):
# I M P L I E D属性将被忽略
参数:
n a m e—元素类型名称
a t t s—与元素相关的属性(如果存在的话)
抛出:S A X E x c e p t i o n
任何S A X异常,可能包含其他异常
C.1.3 org.xml.sax.DTDHandler接口
如果应用程序希望接收与D T D相关的事件,它应该实现本接口。S A X不提供D T D的完整细
节,但是本接口具备该功能,因为否则就无法访问文档体中引用的表示法和未解析实体。
表示法和未解析实体在X M L中是非常特殊的,因此大多数S A X应用程序不需要使用本接口。
接收与D T D相关的基本事件通知
如果S A X应用程序需要有关表示法和未解析实体的信息,则它要实现该接口,并利用解析
器的s e t D T D H a n d l e r方法向S A X解析器注册实例。解析器使用该实例向应用程序报告表示法和未
解析实体声明。
S A X解析器可以以任何顺序报告这些事件,无论表示法和未解析实体是按照什么顺序声明的;
然而,所有D T D事件必须在文档处理器的s t a r t D o c u m e n t事件之后,第一个s t a r t E l e m e n t事件之前报告。
信息存储的任务是由应用程序完成的(它可以以哈希表或对象树的形式保存信息)。如果应
用程序遇到“ N O TAT I O N”、“E N T I T Y”或“ E N T I T I E S”类型的属性,它能够利用本接口提供
的信息寻找与属性值对应的实体和/或表示法。
H a n d l e r B a s e类提供了本接口的缺省实现,它将事件简单地忽略。
表C - 3
n o t a t i o n D e c l 接收表示法声明事件的通知
public void notationDecl( 如果在解析的后续过程中需要引用表示法,应用程序应该记录声明中
String name, 相应的表示法
String publicId, 如果提供了U R L形式的系统标识符, S A X解析器在将它传递给应用
String systemId) 程序之前必须完全解析它
参数:
892使用XML 高级编程
下载
(续)
throws SAXException n a m e—表示法的名称。
p u b l i c I d—表示法的公共标识符,如果不存在公共标识符则为空
s y s t e m I d—表示法的系统标识符,如果不存在系统标识符则为空
抛出:S A X E x c e p t i o n
任何S A X异常,可能包含其他异常
u n p a r s e d E n t i t y D e c l 接收未解析实体声明事件的通知
public void unparsedEntityDecl( 本方法中的表示法名称对应于n o t a t i o n D e c l ( )事件报告的表示法。如
String name, 果在解析的后续过程中需要引用该实体,应用程序应该记录声明中
String publicId, 相应的实体
String systemId, 如果提供了U R L形式的系统标识符,S A X解析器在将它传递给应用程
String notationName) 序之前必须完全解析它
参数:
throws SAXException n a m e—未解析实体的名称。
p u b l i c I d—实体的公共标识符,如果不存在公共标识符则为空
s y s t e m I d—实体的系统标识符,如果不存在系统标识符则为空
n o t a t i o n N a m e—相关表示法的名称
抛出:S A X E x c e p t i o n
任何S A X异常,可能包含其他异常
C.1.4 org.xml.sax.EntityResolver接口
当X M L文档包含外部实体引用时,解析器通常会自动分析U R L:定位并解析相关文件。
本接口允许应用程序超越该行为。举例来说,如果你希望从本地服务器获取实体的另一
个版本,或者保存在数据库的实体目前缓存在内存中,或者实体引用了可变的信息,如:
当前日期,对于以上情况,你都需要应用程序具备自主的控制能力。
当解析器需要获得实体时,它调用本接口,接口将返回一个InputSource对象。
用于解析实体的基本接口
如果S A X应用程序需要对外部实体进行定制的处理,它必须实现本接口,并通过解析器的
s e t E n t i t y R e s o l v e r方法向S A X解析器注册实例。
此后,一旦遇到外部实体(包括外部D T D子集和外部参数实体),在解析器包含它们之前,
应用程序可以截获它们。
大多数S A X应用程序都没必要实现本接口,但是对于从数据库或其他特殊的输入源构建
X M L文档的应用程序,或者使用U R I替代U R L的应用程序来说,本接口是非常有用的。
以下解析程序将为应用程序提供系统标识符为“ h t t p : / / w w w. m y h o s t . c o m / t o d a y”的实体的字
符流:
附录C SAX 1.0: XML简单API使用893 下载
应用程序也可以利用本接口将系统标识符重定向到本地U R I,或者在某类目录中寻找替代品
(可能通过公共标识符获得所需的目录)。
H a n d l e r B a s e类实现了本接口的缺省行为,它总是返回空(以请求解析器使用缺省的系统标
识符)。
表C - 4
名称描述
r e s o l v e E n t i t y 允许应用程序解析外部实体
public InputSource resolveEntity( P a r s e r在打开除了顶级文档实体之外的任何外部实体(包括:
String publicId, 外部D T D子集,D T D中引用的外部实体,以及文档元素中引
String systemId) 用的外部实体)之前,会调用本方法:应用程序可以请求
解析器使用可选的U R I或其他输入源解析实体
throws SAXException, IOException 应用程序编写者可以通过本方法将外部系统标识符重定向
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程下(114)