public class Analysis02 {
// 使用解析后的结果
private static void useResult(School school) {
System.out.println(school);
// 获取所有学生的信息
Collection<Student> stus = school.students();
System.out.println(stus);
// 获取第三个学生
Student stu = school.getStudent(2);
System.out.println(stu);
// 获取第一个学生的班级
String clazz = school.getStudent(0).getClazz();
System.out.println(clazz);
}
public static void main(String[] args) throws DocumentException {
// 最终结果
School school = new School();
// 解析数据
SAXReader reader = new SAXReader();
String path = SD.getPath(SD.D_S, "lesson", "xml");
File file = new File(path, "School.xml");
Document document = reader.read(file);
// School节点
Element root = document.getRootElement();
// root.elements() -- School所有子节点
for (Object object : root.elements()) {
// (Element) object -- Teachers | Students
analyseObject((Element) object, school);
}
school.setMsg(root.getTextTrim());
// 使用解析完的数据
useResult(school);
/*
// Teachers节点
Element ts = root.element("Teachers");
// ts.elements() -- Teachers所有子节点
for (Object obj : ts.elements()) {
// Teacher节点 * 3
Element ele = (Element) obj;
// ele.elements() -- Teacher所有子节点
for (Object o : ele.elements()) {
// name | gender | subject | salary
Element e = (Element) o;
}
}
*/
}
// 参数element -- Teachers | Students
private static void analyseObject(Element element, School school) {
// element.elements() -- Teachers|Students所有子节点
for (Object obj : element.elements()) {
// Teacher节点 * 3 | Student节点 * 4
Element ele = (Element) obj;
// 如果ele是Teacher -- analyseTeacher(ele)
// 如果ele是Student -- analyseStudent(ele)
if (ele.getName().equals("Teacher")) {
Teacher t = analyseTeacher(ele);
school.setTeacher(t);
}
if (ele.getName().equals("Student"))
school.setStudent(analyseStudent(ele));
}
}
// 参数ele -- Teacher节点
private static Teacher analyseTeacher(Element ele) {
Teacher t = new Teacher();
// ID -- 通过属性进行设置
t.setID(ele.attributeValue("id"));
// name | gender | subject | salary -- 通过子标签进行设置
t.setName(ele.element("name").getText());
t.setGender(ele.element("gender").getText());
t.setSubject(ele.element("subject").getText());
t.setSalary(ele.element("salary").getText());
return t;
}
// 参数ele -- Student节点
private static Student analyseStudent(Element ele) {
Student s = new Student();
// num -- 通过属性进行设置
s.setNum(ele.attributeValue("num"));
// name | gender | class -- 通过子标签进行设置
s.setName(ele.element("name").getText());
s.setGender(ele.element("gender").getText());
s.setClazz(ele.element("class").getText());
return s;
}
}
java-----将目标XML文件数据解析为单一对象
最新推荐文章于 2024-01-11 11:04:03 发布