XML解析:
需求:使用DOM4J解析students.xml文件,将解析到的数据封装到学生对象中,并将学生对象存储到ArrayList集合中,最后遍历集合
实现步骤:
1.创建学生类(id,name,age,address)
2.导入jar包
3.创建解析器
4.通过解析器读取xml文档数据,得到Document对象
5.获得根节点元素对象
6.从根节点下查找其他的结点元素,读取数据
实现步骤:
导入jar包:
创建students.xml类:
<?xml version="1.0" encoding="utf-8" ?>
<students>
<student id="stu001">
<name>风清扬</name>
<age>36</age>
<address>西安</address>
</student>
<student id="stu002">
<name>林青霞</name>
<age>33</age>
<address>洛阳</address>
</student>
</students>
创建Student.class类:
package com.aynu6;
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student() {
}
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
'}';
}
}
编写XMLparseDemo类:
package com.aynu6;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
public class XMLParseDemo {
public static void main(String[] args) throws FileNotFoundException, DocumentException {
//创建解析器
SAXReader saxReader = new SAXReader();
//获取Document对象
Document document = saxReader.read(new FileInputStream("D:\\idea1\\workplace\\date\\students.xml"));
//获取根节点对象
Element rootElement = document.getRootElement();
//从根节点开始来查找其他结点元素
List<Element> elements = rootElement.elements("student");
//定义存储学生对象的学生集合
ArrayList<Student> students = new ArrayList<Student>();
//遍历集合得到每一个学生元素
for (Element studentElement : elements) {
//获取元素
Attribute attribute = studentElement.attribute("id");
//获取id属性的值
String id = attribute.getValue();
//获取name元素
Element nameElements = studentElement.element("name");
//获取name元素对应的内容
String name = nameElements.getText();
//获取age元素
Element ageElements = studentElement.element("age");
//获取name元素对应的内容
String age = ageElements.getText();
//获取address元素
Element addressElements = studentElement.element("address");
//获取address元素对应的内容
String address = addressElements.getText();
//封装到学生对象中
Student s = new Student();
s.setId(id);
s.setName(name);
s.setAge(age);
s.setAddress(address);
//把学生对象存储到集合当中去
students.add(s);
}
//遍历集合
// for (Student s : students) {
// System.out.println(s);
// }
students.forEach(s-> System.out.println(s));
}
}
Student{id='stu001', name='风清扬', age='36', address='西安'}
Student{id='stu002', name='林青霞', age='33', address='洛阳'}