一、dom4j下载地址
/*
* dom4j下载地址
* 选择版本 - Download - zip 下载
* 之后解压
*/
https://dom4j.github.io/
下载截图
二、第三方学习文档
/*
* 打开解压文件夹 - docs目录下 : 就是第三方提供的学习文档
* - 选择 index.html 用浏览器打开
* - 选择左上角菜单栏中 : 快速入门(Quick start)
*/
截图
三、导入jar包
/*
* 解压文件夹下 - dom4j-版本号.jar
*
* < 打开IDEA - 模块下新建libs文件夹 >
*
* 将jar包复制到libs目录 - 右击jar包 - Add as Library 导包
*/
截图
三、解析代码实现
方法
获取解析器对象
SAXReader saxReader = new SAXReader();
利用解析器获取整个xml文档
Document document = saxReader.read(new File("xml文件路径"));
获取xml文档的根标签
Element rootElement = document.getRootElement();
获取根标签下的各个子标签 返回一个集合
1.获取全部
rootElement.elements();
2.获取指定名字的全部
rootElement.elements("标签名");
遍历根下子标签集合 获取每一个子标签 element
1.获取指定属性
attribute = element.attribute("属性名");
2.获取这个属性的值
String value = attribute.getValue();
3.获取element下的 指定的 子标签
nameElement = element.element("标签名");
4.获取nameElement的标签体内容
String next = element.getNext();
<?xml version="1.0" encoding="UTF-8" ?>
<!--注释的内容-->
<!--本xml文件用来描述多个学生信息-->
<students>
<!--第一个学生的信息-->
<student id="1">
<name>张三</name>
<age>23</age>
</student>
<!--第二个学生的信息-->
<student id="2">
<name>李四</name>
<age>24</age>
</student>
<aaa></aaa>
</students>
/*
* 需求:
* 解析这个xml文件
* 将解析到的数据封装成一个对象
* 在将这些对象存入一个ArrayList集合中
* 遍历集合
*/
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 XmlParse {
public static void main(String[] args) throws DocumentException {
//1.获取一个解析器对象
SAXReader saxReader = new SAXReader();
//2.利用解析器把xml文件加载到内存中 并返回一个xml文档对象
Document document = saxReader.read(new File("myxml\\src\\xml\\student.xml"));
//3.获取根标签
Element rootElement = document.getRootElement();
/*
* 4.通过根标签 来获取student标签
* elements():获取根下(调用者)所有的子标签 并返回集合
* elements("标签名"):获取根下(调用者)所有指定子标签 并返回集合
*/
// List list = rootElement.elements();
// System.out.println(list.size());
List<Element> studentElements = rootElement.elements("student");
//创建集合 用来装学生对象的
ArrayList<Student> list = new ArrayList<>();
//5.遍历集合得到每一个student标签
for (Element element : studentElements) {
//element依次表示每一个student标签
//获取id这个属性
Attribute attribute = element.attribute("id");
//获取id的属性值
String id = attribute.getValue();
//获取name标签 element("标签名"):获取调用者指定子标签
Element nameElement = element.element("name");
//获取这个标签 的 标签体 内容
String name = nameElement.getText();
//获取age标签
Element ageElement = element.element("age");
//获取age标签 的 标签体 内容
String age = ageElement.getText();
//打印
// System.out.println(id + "--" + name + "--" + age);
//封装成学生对象
Student s = new Student(id,name,Integer.parseInt(age));
//存入集合
list.add(s);
}
//遍历集合
for (Student student : list) {
System.out.println(student);
}
}
}