Java导入xml文件

2023-11-16

需求:前后端分离项目,后端Springboot框架,将学生信息通过xml文件格式导入。

一个学生信息,以及该学生选择的学科。

student.xml文件格式如下:

StudentController.java

    @PostMapping("import/xml")
    public void importXml(@RequestBody MultipartFile file){
         studentService.importXml(file);
    }

StudentService.java

void importXml(MultipartFile file);

StudentServiceImpl.java

@Override
    public void importXml(MultipartFile file) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = null;
        StudentDto dto = new StudentDto();
        try {
            builder = factory.newDocumentBuilder();
            Document document = builder.parse(file.getInputStream());
            //解析info节点
            NodeList infoNodeList = document.getElementsByTagName("info");
            Student student= analysisImportXmlInfo(infoNodeList);

            //解析nodes节点
            NodeList elementSubjectList = document.getElementsByTagName("subjects");
            List<Subject> subjects= analysisImportXmlSubjects(elementSubjectList );
            //保存入库
            saveDataInfo(dto);
        } catch (Exception e) {
           
            e.printStackTrace();
           
        }
      
    }


private Student analysisImportXmlInfo(NodeList infoNodeList){
        Student student = new Student();
        for (int i=0;i<infoNodeList.getLength();i++){
            Element element = (Element) infoNodeList.item(i);
            if (element.getElementsByTagName("no").item(0).getFirstChild() != null){
                student.setNo(element.getElementsByTagName("no").item(0).getFirstChild().getNodeValue());
            }
            if (element.getElementsByTagName("name").item(0).getFirstChild() != null){
                student.setName(element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
            }
            if (element.getElementsByTagName("age").item(0).getFirstChild() != null){
                student.setAge(element.getElementsByTagName("age").item(0).getFirstChild().getNodeValue());
            }
        }
        return student;
    }



private  List<Subject> analysisImportXmlSubjects(NodeList elementSubjectList ){
        List<Subject> subjects = new ArrayList<>();
        if (elementSubjectList .getLength() < 1) {
            return new ArrayList<>();
        }
        Element element = (Element) elementSubjectList .item(0);
        NodeList idList = element.getElementsByTagName("id");
        for (int i = 0;i<idList.getLength();i++) {
            Subject subject = new Subject();
            if (element.getElementsByTagName("score").item(i).getFirstChild() != null) {
                subject.setScore(element.getElementsByTagName("score").item(i).getFirstChild().getNodeValue());
            }
            if (element.getElementsByTagName("subjectName").item(i).getFirstChild() != null) {
                subject.setSubjectName(element.getElementsByTagName("subjectName").item(i).getFirstChild().getNodeValue());
            }
            subjects .add(subject);
        }
        return subjects ;
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java导入xml文件 的相关文章

随机推荐