需求:加载并解析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