需求:利用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;
}
}