digester 使用小结

digester 用法小结

digester可以用来解析xml信息为对象,这样就可以不用SAXParse方法来取xml然后进行解析,可以直接根据自定义规则来处理.stusts中就很好了使用digester


//实例化对象
Digester dig = new Digester();
//存入调用对象
dig.push(this);
//调置不校验
dig.setValidating(false);
//当遇到aa/bb/cc节点时 调用存入对象的methodTest方法,该方法参数为 2个
dig.addCallMethod("aa/bb/cc", "methodTest", 2);
dig.addCallParam("aa/bb/cc/a", 0);//入参1
dig.addCallParam("aa/bb/cc/b", 1);//入参2
//查找文件流
InputStream in = this.getClass().getResourceAsStream("/test/digester.xml");
try {
//解析
dig.parse(in);
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}


//dig.addObjectCreate("aa/bb/cc", com.lins.test.dto.DigesterABC.class);
//创建工厂
dig.addFactoryCreate("aa/bb/cc", new FactoryClass());

dig.addSetProperties("aa/bb/cc");
//当到节点 aa/bb/cc/a时调用 setAa方法,把a的text()设置为值
dig.addBeanPropertySetter("aa/bb/cc/a","aa");
dig.addBeanPropertySetter("aa/bb/cc/b","bb");
dig.addSetNext("aa/bb/cc", "printStudent");

//dig.addRule("aa/bb/cc/set-property", new ABCRule());
dig.addSetProperty("aa/bb/cc/set-property", "property","value");
InputStream in = this.getClass().getResourceAsStream("/test/digester.xml");
try {
//返回调用对象
Test test = (Test)dig.parse(in);
System.out.println(test.stuList.size());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


/*当遇到 struts-config/data-sources/data-source 节点时进行创建DataSourceConfig对象
digester.addObjectCreate
("struts-config/data-sources/data-source",
org.apache.struts.config.DataSourceConfig.class);
*/
digester.addObjectCreate
("struts-config/data-sources/data-source",
"org.apache.struts.config.DataSourceConfig",
"className");
/*设置data-source 节点的属性,这个属性是上面创造的对象DataSourceConfig所具有的属性
如<data-source id="ss" /> 则 DataSourceConfig 这个对象就必须有setId这个方法*/
digester.addSetProperties
("struts-config/data-sources/data-source");
/* 当遇到 struts-config/data-sources/data-source 节点时,调用addDataSourceConfig方法,
*这个方法应该是 digester实例对象push的对象的方法 在struts里是moudleConfig
*/
digester.addSetNext
("struts-config/data-sources/data-source",
"addDataSourceConfig",
"org.apache.struts.config.DataSourceConfig");
/*当遇到data-source/set-property 节点时,调用 AddDataSourcePropertyRule的规则,
这个类要扩展rule抽象类
*/
digester.addRule
("struts-config/data-sources/data-source/set-property",
new AddDataSourcePropertyRule());


/*当遇到struts-config/action-mappings/action时,创建 ActionMappingFactory对象
* 这个对象扩展抽象类AbstractObjectCreationFactory,并且要实象抽象方法createObject产生一对象返回
*/
digester.addFactoryCreate
("struts-config/action-mappings/action",
new ActionMappingFactory());
/*同data-source*/
digester.addSetProperties
("struts-config/action-mappings/action");
/*同data-source*/
digester.addSetNext
("struts-config/action-mappings/action",
"addActionConfig",
"org.apache.struts.config.ActionConfig");
/*在遇到action/set-property 节点时,自动调用刚才创建的对象的设置方法
如<set-property property="c" value="d"/> 则刚才工厂方法创建的对象必须包含有方法 setC()
*/
digester.addSetProperty
("struts-config/action-mappings/action/set-property",
"property", "value");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值