JAVA uses dom4j to parse XML files

There is a lot of content. If you are impatient and don’t want to read the code, please exit immediately. If you think the content is helpful to you after reading it, please give it a like~~~

1. Project introduction dependencies

  		<dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>

2.XML template

<?xml version="1.0" encoding="UTF-8"?>
<subjectResultTables>
    <table tableName="tb_exa_results_february" tableDesc="2月-考试成绩结果表">
        <subject name="english" desc="英语科目">
            <result userid="A01" score="77"/>
            <result userid="A02" score="88"/>
        </subject>
        <subject name="maths" desc="数学科目">
            <result userid="A01" score="134"/>
            <result userid="A02" score="104"/>
        </subject>
    </table>
    <table tableName="tb_exa_results_june" tableDesc="6月-考试成绩结果表">
        <subject name="english" desc="英语科目">
            <result userid="D01" score="77"/>
            <result userid="D02" score="88"/>
        </subject>
        <subject name="maths" desc="数学科目">
            <result userid="E01" score="134"/>
            <result userid="E02" score="104"/>
        </subject>
    </table>
</subjectResultTables>

3. Key code (to facilitate comparison of xml analysis code, the object entity is at the end)


    public static void loadMetaStandardMapConfig() {
    
    
        try {
    
    
            //获取配置文件路径
            String path = System.getProperty("user.dir") + File.separator + "conf" + File.separator + "subjectResult.xml";

            SAXReader saxReader = new SAXReader();
            Document document = saxReader.read(new FileInputStream(new File(path)));
            List<SubjectResultTable> subjectResultTables=new ArrayList<>();
            if (document != null) {
    
    
                //获取根节点 [subjectResultTables]
                Element rootElement = document.getRootElement();

                //获取根节点下的所有子节点 List[table]
                List<Element> tableSubElementList = rootElement.elements();
                for (Element tableElement : tableSubElementList) {
    
    

                    SubjectResultTable subjectResultTable = new SubjectResultTable();
                    //获取数据表名,数据表描述名
                    subjectResultTable.setTableName(tableElement.attributeValue("tableName"));
                    subjectResultTable.setTableDesc(tableElement.attributeValue("tableDesc"));

                    List<SubjectInfo> subjectInfos=new ArrayList<>();
                    //初始化科目信息
                    subjectResultTable.setSubjectInfos(subjectInfos); ;

                    //获取Table下的所有子节点 List[subject]
                    List<Element> subjectElements = tableElement.elements();
                    for (Element subjectElement : subjectElements) {
    
    
                        //初始化科目信息对象
                        SubjectInfo subjectInfo=new SubjectInfo();
                        subjectInfo.setName(subjectElement.attributeValue("name"));
                        subjectInfo.setDesc(subjectElement.attributeValue("desc"));

                        List<SubjectResult> subjectResults=new ArrayList<>();
                        subjectInfo.setSubjectResults(subjectResults);

                        //获取subject下的所有子节点 List[result]
                        List<Element> resultElements  = subjectElement.elements();
                        for (Element resultElement : resultElements) {
    
    

                            SubjectResult subjectResult = new SubjectResult();
                            subjectResult.setUserid(resultElement.attributeValue("userid"));
                            subjectResult.setScore(resultElement.attributeValue("score"));

                            subjectResults.add(subjectResult);
                        }
                        subjectInfos.add(subjectInfo);
                    }
                    subjectResultTables.add(subjectResultTable);
                }

                System.out.printf(JSON.toJSONString(subjectResultTables));
            }
        } catch (DocumentException | FileNotFoundException e) {
    
    
            System.out.println(String.format("加载文件[conf/subjectResult.xml]异常!" + e.getMessage()));
        }
    }

4. Execution result 1

Insert image description here

4.2 Execution result 2 (json format)

[
    {
    
    
        "subjectInfos": [
            {
    
    
                "desc": "英语科目",
                "name": "english",
                "subjectResults": [
                    {
    
    
                        "score": "77",
                        "userid": "A01"
                    },
                    {
    
    
                        "score": "88",
                        "userid": "A02"
                    }
                ]
            },
            {
    
    
                "desc": "数学科目",
                "name": "maths",
                "subjectResults": [
                    {
    
    
                        "score": "134",
                        "userid": "A01"
                    },
                    {
    
    
                        "score": "104",
                        "userid": "A02"
                    }
                ]
            }
        ],
        "tableDesc": "2月-考试成绩结果表",
        "tableName": "tb_exa_results_february"
    },
    {
    
    
        "subjectInfos": [
            {
    
    
                "desc": "英语科目",
                "name": "english",
                "subjectResults": [
                    {
    
    
                        "score": "77",
                        "userid": "D01"
                    },
                    {
    
    
                        "score": "88",
                        "userid": "D02"
                    }
                ]
            },
            {
    
    
                "desc": "数学科目",
                "name": "maths",
                "subjectResults": [
                    {
    
    
                        "score": "134",
                        "userid": "E01"
                    },
                    {
    
    
                        "score": "104",
                        "userid": "E02"
                    }
                ]
            }
        ],
        "tableDesc": "6月-考试成绩结果表",
        "tableName": "tb_exa_results_june"
    }
]

5.Create entity class

5.1. Summary of results

/**
 * 成绩表
 */
@Data
public class SubjectResultTable {
    
    

     //成绩结果表名
     String tableName;
     
     //表名描述
     String tableDesc;

     //报文协议标准表字段属性
     List<SubjectInfo> subjectInfos;

}

5.2. Account information table

/**
 * 科目信息
 */
@Data
public class SubjectInfo {
    
    

     //科目名称
     String name;
     
     //科目描述
     String desc;

     //科目成绩结果
     List<SubjectResult> subjectResults=new ArrayList<>();

}

5.3 Student performance results table

/**
 * 科目成绩结果
 */
@Data
public class SubjectResult {
    
    

     //学号
     String userid;
     
     //成绩
     String score;
}

Guess you like

Origin blog.csdn.net/qq_37959253/article/details/130242275