一、
1.xml概述
2.xml标签规则
3.xml语法规则
xml文件实现
<?xml version="1.0" encoding="UTF-8" ?>
<!-- xml文件用来描述多个学生信息-->
<Students>
<!--第一个学生信息-->
<student id="1">
<name>zhangsan</name>
<age>18</age>
<info>学生的信息 < ></info>
<message><![CDATA[<<<>>>]]]></message>
</student>
<!--第二个学生信息-->
<student id="2">
<name>lisi</name>
<age>19</age>
</student>
</Students>
4.解析xml
4.1常见解析思想 DOM
4.2 解析工具DOM4J_进行解析
DOM4J下载地址:https://dom4j.github.io/
public class Student {
private String id;
private String name;
private int age;
public Student(String id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public Student() {
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
'}';
}
}
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
/**
* 利用dom4j解析xml
*/
public class XmlDemo {
static ArrayList<Student> list = new ArrayList<>();
public static void main(String[] args) throws DocumentException {
//1.获取一个解析器 对象
SAXReader saxReader = new SAXReader();
//2.利用解析器将xml加载到内存中返回一个文档对象
Document document = saxReader.read(new File("test\\xml\\student.xml"));
//3.获取根标签
Element rootElement = document.getRootElement();
//4.通过根标签获取student标签
//elements()可以获取调用者的所有子标签,会把这个子标签放到一个集合中返回
// List list = rootElement.elements();
// System.out.println(list.size());
/**output:
* 3 : 两个student 1个aaa
* <student id="1">
* <name>zhangsan</name>
* <age>18</age>
* <info>学生的信息 < ></info>
* <message><![CDATA[<<<>>>]]]></message>
* </student>
* <!--第二个学生信息-->
* <student id="2">
* <name>lisi</name>
* <age>19</age>
* </student>
* <aaa></aaa>
*/
//elements(标签名)可以获取调用者的所有指定的子标签,会把这个子标签放到一个集合中返回
List<Element> studentElements = rootElement.elements("student");
for (Element element : studentElements) {
//element依次表示每一个student标签
//获取id这个属性
Attribute attribute = element.attribute("id");
//获取id的属性值
String id = attribute.getValue();
//获取name标签
Element nameElement = element.element("name");
//获取name标签体内容
String name = nameElement.getText();
Element ageElement = element.element("age");
String age = ageElement.getText();
// System.out.println("学号:"+id);
// System.out.print("姓名:"+name+"\t" + "年龄:"+age+"\n");
/**output:
* 学号:1
* 姓名:zhangsan 年龄:18
* 学号:2
* 姓名:lisi 年龄:19
*/
//封装
Student student = new Student(id, name, Integer.parseInt(age));
list.add(student);
}
for (Student student : list) {
System.out.println(student);
}
/** output:
* Student{id='1', name='zhangsan', age='18'}
* Student{id='2', name='lisi', age='19'}
*/
}
}