【Dom4j读取xml文件中数据封装到list集合小练习】

需求:利用Dom4J的知识,将Student.xml文件中的联系人数据封装成List集合,其中每个元素是实体类Users。打印输出 List 中的每个元素
1.定义联系人类
2.创建解析器
3.解析XML
4.得到根标签
5.得到所有的user子标签
6.创建集合保存所有联系人对象
7.遍历获取每个user标签
8.获取user标签中的所有数据
9.根据数据创建Users联系人对象 
10.遍历集合

Student.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<users>

    <user id='1' vip="true">
        <name>张三</name>
        <age>23</age>
        <sex>男</sex>
    </user>

    <user id='2'>
        <name>李四</name>
        <age>23</age>
        <sex>女</sex>
    </user>
    <hehe></hehe>

</users>

Test类

package Dom4j;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.ArrayList;
import java.util.List;

//我想要得到xml的数据
//方式一:每次需要数据时都去解析一次xml文件(多次解析xml文件慢)
//方式二:我解析一次xml的数据保存到java的对象中(访问对象,对象在内存中,比较快)
public class Test001 {
    public static void main(String[] args) throws DocumentException {
        //2.创建解析器
        SAXReader reader = new SAXReader();
        //3.解析XML
        Document document = reader.read("G:\\JDBC\\Day006\\src\\Student.xml");
        //4.得到根标签:Element表示标签
        Element rootElement = document.getRootElement();       //<users>
        System.out.println("根标签的名字:"+rootElement.getName());

        //5.得到所有的user子标签
        //element():得到所有的子标签
        //elements(String name):得到所有的指定名称的子标签
        List<Element> userList = rootElement.elements("user");

        //6.创建集合保存所有联系人对象
        ArrayList<Users> list =new ArrayList<>();

        //7.遍历获取每个user标签
        for (Element usersElement : userList) {
            //8.获取user标签中的所有数据
            //attributeValue(属性名):通过属性名找到值
            String idStr = usersElement.attributeValue("id");
            int id = Integer.parseInt(idStr);//"1"变成数字1
            String vipStr = usersElement.attributeValue("vip");
            boolean vip = Boolean.parseBoolean(vipStr);//"true"变成true,其他都是转成false

            //elementText(子元素名称):得到子元素的文本
            String name = usersElement.elementText("name");
            String ageStr = usersElement.elementText("age");
            int age = Integer.parseInt(ageStr);
            String sex = usersElement.elementText("sex");

            //9.根据数据创建Users联系人对象
            Users users=new Users(id,vip,name,age,sex);
            list.add(users);

        }
        //遍历集合
        for (Users users : list) {
            System.out.println(users);
        }
    }
}

Users类

public class Users {
    private int id;
    private boolean vip;
    private String name;
    private int age;
    private String sex;

    public Users(int id, boolean vip, String name, int age, String sex) {
        this.id = id;
        this.vip = vip;
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    public Users() {
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", vip=" + vip +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                '}';
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public boolean isVip() {
        return vip;
    }

    public void setVip(boolean vip) {
        this.vip = vip;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值