Digester入门

来源:互联网 发布:层次分析法软件 编辑:程序博客网 时间:2024/06/11 23:47

官方文档: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.xmlDigester 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.xmlInputStream is2 = Client.class.getClassLoader().getResourceAsStream("web.xml");//parse user.xmlDigester 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());}}}


原创粉丝点击