tomcat解析(六)Digester(二)startElement

来源:互联网 发布:淘宝店铺 关注排名 编辑:程序博客网 时间:2024/05/23 00:41

在用SAX对XML进行解析时,需要设置相应的ContentHandler实现,该对象将用于响应各种xml解析的事件,如开始标签时会调用其StartElement方法,遇到标签体时会调用其characters方法,而结束标签会调用其eneElement方法,我们可以看到Digester便是继承了DefaultHandler类,而该类则实现了ContentHandler接口,因此当我们调用digester.parse对相应的xml文件进行解析时,Digester类的这几个方法便会执行,本文先粗略地看一下startElement的实现,如下:
     

startElement方法有四个参数,分别为命名空间,两个标签路径名加一个标签属性对象,下面我们先简单地介绍一下startElement方法里的内容
1.更新属性中的系统值引用
updateAttributes(list)主要是用于将属性值中以${}标示的系统属性值转换为真正的值,使用的属性均从System.getProperty获取
2.初始化标签体内容
bodyText是Digester挂有的一个用于存放标签体内容的StringBuffer对象,当解析开始标签时应该还没有标签体内容的,因此这里给了一个空的StringBuffer对象,后又将bodyText放入到bodyTexts(一个ArrayStack)里
3.获取路径名
此处将标签的路径字符赋给name,XML格式如:<Servers><Server><Server></Servers>,当解析到<Server>标签时路径则为Servers/Server,在得到路径后又将该路径赋予match变量;
4.得到与标签体路径名匹配的Rule List,触发其begin方法

这部分内容是tomcat解析xml的重要部分,将等到characters及endElement方法讲解完后一起进行说明

原创粉丝点击