Digester入门

官方文档:http://commons.apache.org/digester/guide/core.html

测试小程序:

package com.zizhu;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.apache.commons.digester3.Digester;
import org.apache.commons.digester3.ObjectCreateRule;
import org.apache.commons.digester3.Rule;
import org.apache.commons.digester3.SetNextRule;
import org.apache.commons.digester3.SetPropertiesRule;
import org.xml.sax.SAXException;

import com.zizhu.model.Child;
import com.zizhu.model.Parent;
import com.zizhu.model.ServletBean;
import com.zizhu.model.ValueWrap;

public class Client {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		InputStream is = Client.class.getClassLoader().getResourceAsStream("user.xml");
		
		//parse user.xml
		Digester dig1 = new Digester();
		
		//创建对象
		Rule parent = new ObjectCreateRule("com.zizhu.model.Parent");
		Rule child = new ObjectCreateRule("com.zizhu.model.Child");
		
		//设置属性
		Rule parentProp = new SetPropertiesRule();
		Rule childProp = new SetPropertiesRule();
		
		//建立父子关系
		Rule relation = new SetNextRule("addChildren");
		
		dig1.addRule("parent", parent);
		dig1.addRule("parent", parentProp);
		
		dig1.addRule("parent/child", child);
		dig1.addRule("parent/child", childProp);
		dig1.addRule("parent/child", relation);
		
		Parent p = null;
		try {
			p = dig1.parse(is);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}finally{
			try {
				is.close();
			} catch (IOException e) {
			}
		}
		
		System.out.println(p.getName());
		List<Child> children = p.getChildren();
		for(Child c : children){
			System.out.println("child : id = " + c.getId() + ", name="+
					c.getName() + ", age = " + c.getAge());
		}
		
		
		//模拟加载web.xml
		InputStream is2 = Client.class.getClassLoader().getResourceAsStream("web.xml");
		
		//parse user.xml
		Digester dig2 = new Digester();
		dig2.addObjectCreate("web-app/servlet", "com.zizhu.model.ServletBean");
		dig2.addCallMethod("web-app/servlet/servlet-name", "setServletName", 0);//0表示将内容解析为单个参数
		dig2.addCallMethod("web-app/servlet/servlet-class", "setServletClass", 0);
		
		dig2.addCallMethod("web-app/servlet/init-param", "addInitParam", 2);//2表示接下来设置2个参数
		dig2.addCallParam("web-app/servlet/init-param/param-name", 0);
		dig2.addCallParam("web-app/servlet/init-param/param-value", 1);
		
		ServletBean servlet = null;
		try {
			 servlet = dig2.parse(is2);
		} catch (IOException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		}finally{
			try {
				is2.close();
			} catch (IOException e) {
			}
		}
		
		System.out.println(servlet.getServletName());
		System.out.println(servlet.getServletClass());
		List<ValueWrap> initParams = servlet.getInitParams();
		for(ValueWrap wrap : initParams){
			System.out.println("name - " + wrap.getName() + ", value - " + wrap.getValue());
		}
		
	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值