解析文档的模型比较常用的有sax、dom、jdom、dom4j四种模型:
sax是从上到下逐步读取,遍读边产生事件(解析),只读一次哈;
由于这个特性呢,决定了这种读取方式不能随机访问,不能修改文件,
这种模型最大的优点就是对于大型文件不会显得麻烦。
如果我们想修改文件,或者随机访问呢;就得用到DOM模型了。
DOM模型是先将XML文档全部读取到内存中,再解析。
这种特性决定了,它解析文件占用大量内存,不能解析大型文件。
jdom和dom4j则是面向java语言的,
这两种解析模型的功能都是很强大的
今天就介绍点简单的解析方式:sax下的digester方式解析
首先需要导几个包哈:digester.beanutils, collections, commens-logging
然后创建张XML文档
encoding="UTF-8"?>
业务查询配置文件
MySelfCCB
com.lovo.lis.business.bean.CCB
MySelfICBC
com.lovo.lis.business.bean.ICBC
MySelfCCB
/CCB
MySelfICBC
/ICBC
在这我建了与之对应的3个JAVABean:WebApp , BusinessServlet ,
ServletMapping
//得到一个Digester对象
Digester
digester = new Digester();
//忽略验证
digester.setValidating(false);
//根据web-app节点创建一个WebApp类
digester.addObjectCreate("web-app",
WebApp.class);
//设置它的属性为web-app/description节点的文本内容
digester.addBeanPropertySetter("web-app/description");
//根据web-app/servlet节点创建一个BusinessServlet类
digester.addObjectCreate("web-app/servlet",BusinessServlet.class);
//设置它的属性servletName值为web-app/servlet/servlet-name节点的文本内容
digester.addBeanPropertySetter("web-app/servlet/servlet-name","servletName");
//设置它的属性servletClass值为web-app/servlet/servlet-class节点的文本内容
digester.addBeanPropertySetter("web-app/servlet/servlet-class","servletClass");
//调用WebApp下的addBusinessServlet()方法
//传一个web-app/servle节点对象为参数
digester.addSetNext("web-app/servlet","addBusinessServlet");
//根据web-app/servlet-mapping节点创建一个ServletMapping类
digester.addObjectCreate("web-app/servlet-mapping",ServletMapping.class);
//设置它的属性urlPattern值为web-app/servlet-mapping/url-pattern节点的文本内容
digester.addBeanPropertySetter("web-app/servlet-mapping/url-pattern","urlPattern");
//设置它的属性servletName值为web-app/servlet-mapping/servletName节点的文本内容
digester.addBeanPropertySetter("web-app/servlet-mapping/servlet-name","servletName");
//调用WebApp下的addServletMapping()方法
//传一个web-app/servlet-mapping节点对象为参数
digester.addSetNext("web-app/servlet-mapping","addServletMapping");
这基本上就是它比较常用到的一些方法了哈!