Digester解析xml文件

来源:互联网 发布:python函数传入文件名 编辑:程序博客网 时间:2024/04/27 17:11

Java与xml数据绑定,需要解析xml,用Digester解析xml文件是个不错的选择。

用digester解析xml文件需要用到的jar包下载地址:http://download.csdn.net/detail/ll840768874/8592247


下面为实例代码:

xml文件代码

<Students><student><id>1</id><name>loup</name><age>25</age><address>南京</address></student><student><id>2</id><name>xf</name><age>25</age><address>无锡</address></student><student><id>3</id><name>wm</name><age>23</age><address>南京</address></student></Students>

跟标签为students,在Java中可以看成是student的一个list;下面为students类

public class Students{    private List<Student> listStus=new ArrayList<Student>();    public List<Student> getListStus()    {        return listStus;    }    public void setListStus(List<Student> listStus)    {        this.listStus = listStus;    }        /**     *      * 学生对象放入到list中     *      * @param e     * @see [类、类#方法、类#成员]     */    public void addStudents(Student e)    {        this.listStus.add(e);    }    }

Java中需要有一个实体类来封装读取到的student元素属性。下面为student类:

public class Student{    private int id;    private String name;    private String address;    private int age;    public int getId()    {        return id;    }    public void setId(int id)    {        this.id = id;    }    public String getName()    {        return name;    }    public void setName(String name)    {        this.name = name;    }    public String getAddress()    {        return address;    }    public void setAddress(String address)    {        this.address = address;    }    public int getAge()    {        return age;    }    public void setAge(int age)    {        this.age = age;    }    }

下面为读取xml文件,使得xml文件盒Java数据类型相关联。

public class DigesterTest{        public Students DigTest()    {        Digester digester = new Digester();        digester.setValidating(false);        //根节点对应的类     指明匹配模式和要创建的类         digester.addObjectCreate("Students", Students.class);        //指明匹配模式和要创建的类        digester.addObjectCreate("Students/student", Student.class);        //设置对应属性。和xml文件对应,不设置则为默认        digester.addBeanPropertySetter("Students/student/id", "id");        digester.addBeanPropertySetter("Students/student/name","name");        digester.addBeanPropertySetter("Students/student/age","age");        digester.addBeanPropertySetter("Students/student/address","address");        // 当移动到下一个标签中时的动作        digester.addSetNext("Students/student", "addStudents");                Students students=null;        try        {            //xml放在src下面,通过getClassLoader().getResourceAsStream取到xml文件,直接写成parse("student.xml")会报找不到文件            students = (Students)digester.parse(DigesterTest.class.getClassLoader().getResourceAsStream("student.xml"));        }        catch (IOException e)        {            e.printStackTrace();        }        catch (SAXException e)        {            e.printStackTrace();        }        return students;    }}


鄙人个人见解,不足之处望见谅。


0 0
原创粉丝点击