Digester简单使用

来源:互联网 发布:arm linux gcc4.8下载 编辑:程序博客网 时间:2024/06/16 07:22

Digester库是用于解析XML文档。对应XML中每一个元素,Digester对应检查它是否要做事先预定义的事件。在调用Digester对象的parse()方法之前,程序员应该先定义好Digester对象执行那些动作.下面有个简单的案例:

1.xml示例
<?xml version="1.0" encoding="UTF-8"?>        <employee firstName="dada" lastName="aa">            <office desc="zz1">                <address stressName="zz2"></address>            </office>            <office desc="zz3">                <address stressName="zz4"></address>             </office>        </employee>
2.xml节点对应的model
public class Employee {    private String firstName;    private String lastName;    private List<Office> offices=new ArrayList<Office>();    public String getFirstName() {        return firstName;    }    public void setFirstName(String firstName) {        this.firstName = firstName;    }    public String getLastName() {        return lastName;    }    public void setLastName(String lastName) {        this.lastName = lastName;    }    public void addOffice(Office office){        offices.add(office);    }    public List<Office> getOffices(){        return offices;    }    public void printName(){        System.out.println("firstName is:"+firstName+"  "+"lastName is:"+lastName);    }}public class Office {    private Address address;    public Address getAddress() {        return address;    }    public void setAddress(Address address) {        this.address = address;    }    public String getDesc() {        return desc;    }    public void setDesc(String desc) {        this.desc = desc;    }    private String desc;}public class Address {    private String stressName;    public String getStressName() {        return stressName;    }    public void setStressName(String stressName) {        this.stressName = stressName;    }}
3.测试类
** * 用Digester类进行进行时,当遇到注册的rule时,首先从Digester中注册的rules中找出对用的Rule(如:SetPropertiesRule,ObjectCreateRule等) * 然后去调用统一的接口begin()和end()进行处理 */public class DigesterTest {    public static void main(String[]args)throws Exception{        File file=new File(DigesterTest.class.getResource("/").getPath() + "employer");        Digester digester=new Digester();        digester.addObjectCreate("employee","test.model.Employee");        digester.addSetProperties("employee");        digester.addCallMethod("employee","printName");        digester.addObjectCreate("employee/office","test.model.Office");        digester.addSetProperties("employee/office");        digester.addSetNext("employee/office","addOffice");        digester.addObjectCreate("employee/office/address","test.model.Address");        digester.addSetProperties("employee/office/address");        digester.addSetNext("employee/office/address","setAddress");        Employee employee=(Employee)digester.parse(file);        for(Office office:employee.getOffices()){            System.out.println(office.getDesc());            System.out.println(office.getAddress().getStressName());        }    }}
4.执行结果
firstName is:dada  lastName is:aazz1zz2zz3zz4
原创粉丝点击