需求:加载并解析xml文件中的数据,完成数据处理,并在页面展示
①XML文件
xml文件放resources目录下
在pom.xml文件中引入dom4j的依赖,用于解析XML文件
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
创建一个java类用于解析XML文件,一个java类用于存放解析后的数据,分别为工具类XMLParserUtils、实体类Emp
②前端页面
Springboot项目的静态资源(html,css,js等前端资源)默认存放目录为:classpath:/static 、 classpath:/public、 classpath:/resources,后面两个需要自行创建,但是static目录maven已经事先创建好了
使用axios发起请求,访问/listEmp
<script>
new Vue({
el: "#app",
data() {
return {
tableData: []
}
},
mounted(){
axios.get('/listEmp').then(res=>{
if(res.data.code){
this.tableData = res.data.data;
}
});
},
methods: {
}
});
</script>
③后端处理请求,响应数据
@RestController
public class EmpController {
@RequestMapping("/listEmp")
public Result list(){
//1. 加载并解析emp.xml
String file = this.getClass().getClassLoader().getResource("emp.xml").getFile();
System.out.println(file);
List<Emp> empList = XmlParserUtils.parse(file, Emp.class);
//2. 对数据进行转换处理 - gender, job
empList.stream().forEach(emp -> {
//处理 gender 1: 男, 2: 女
String gender = emp.getGender();
if("1".equals(gender)){
emp.setGender("男");
}else if("2".equals(gender)){
emp.setGender("女");
}
//处理job - 1: 讲师, 2: 班主任 , 3: 就业指导
String job = emp.getJob();
if("1".equals(job)){
emp.setJob("讲师");
}else if("2".equals(job)){
emp.setJob("班主任");
}else if("3".equals(job)){
emp.setJob("就业指导");
}
});
//3. 响应数据
return Result.success(empList);
}
resul表明返回的结果实体类(统一请求类型)
注解
@RestController
表示这是一个控制器类,所有方法都会默认以JSON
格式返回,@RestController = @Controller +@ResponseBody
(将方法返回值直接响应给浏览器),所以类上有@RestController注解或@ResponseBody注解其中之一时时:就表示当前类下所有的方法返回值做为响应数据
注解
@RequestMapping("/listEmp")
指定了这个方法的 URL 映射。当用户访问/listEmp
路径时,会调用list
方法this.getClass().getClassLoader().getResource("emp.xml").getFile();表示获得当前类对象->获得当前类的类加载器 (ClassLoader,用于加载类文件和资源文件)->从类路径中找到名为
emp.xml
的资源文件->获得其url地址List<Emp> empList = XmlParserUtils.parse(file, Emp.class);使用
XmlParserUtils
类的方法来解析 XML 文件,并将其内容转换为一个Emp
对象的列表
使用PostMan测试
返回的result