dom4j将实体bean转换为规定格式的xml

需求:将实体bean生成固定格式的xml文件,实体bean及xml格式如下图:

dom4j将实体bean转换为规定格式的xmldom4j将实体bean转换为规定格式的xml主要使用的时dom4j中的DocumentHelper:

// 新建student.xml文件并新增内容
Document document = DocumentHelper.createDocument();

首先引入dom4j的依赖: 

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

并通过自带的方法拼接标签,入参为要生成xml的实体对象List和生成的xml路径,测试代码如下:

public static void dtoToXml(List<excelDto> list,String filePath) throws IOException {
        long lasting = System.currentTimeMillis();//效率检测
        try {
            XMLWriter writer = null;// 声明写XML的对象
            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("UTF-8");// 设置XML文件的编码格式
            format.setIndent("    ");//设置缩进
            format.setNewlines(true);// 设置换行
            File file = new File(filePath);//获得文件

            //判断是否存在该文件,若存在则删除后重新生成
            if (file.exists()) {
                file.delete();
            }
            // 新建student.xml文件并新增内容
            Document document = DocumentHelper.createDocument();
            //编写第一行suite标签
            Element suite = document.addElement("suite").addAttribute("name","BQ").addAttribute("parallel","none").addAttribute("thread-count","5");//添加根节点
            //编写parameter标签
            suite.addElement("parameter").addAttribute("name","DESCRIPTION").addAttribute("value","保全交易");
            suite.addElement("parameter").addAttribute("name","DRIVER_CLASS").addAttribute("value","oracle.jdbc.driver.OracleDriver");
            suite.addElement("parameter").addAttribute("name","CONNECTION_URL").addAttribute("value","jdbc:oracle:thin:@192.168.240.96:1521/lis7_test");
            suite.addElement("parameter").addAttribute("name","USERNAME").addAttribute("value","lis7np");
            suite.addElement("parameter").addAttribute("name","PASSWORD").addAttribute("value","lis7np");
            suite.addElement("parameter").addAttribute("name","SCHEMA").addAttribute("value","lis7np");

            //遍历读取到的Excel表单信息List集合。
            for (excelDto excelDto : list) {
                String projectNum = excelDto.getProjectNum();
                String sceneNum = excelDto.getSceneNum();
                String policyNo = excelDto.getPolicyNo();
                String sumResult = excelDto.getSumResult();
                //如果保单号不存在则生成xml
                if(policyNo == null || policyNo.length() == 0){
                    continue;
                }

                //编写test标签
                Element testElement = suite.addElement("test").addAttribute("name",sceneNum);
                //编写parameter标签
                testElement.addElement("parameter").addAttribute("name","ContNo").addAttribute("value",policyNo);
                testElement.addElement("parameter").addAttribute("name","ExpectResult").addAttribute("value",sumResult);
                //编写classes标签
                Element calssesElement = testElement.addElement("classes");
                calssesElement.addElement("class").addAttribute("name","com.sinosoft.lis.test.bq.TestEdorDetailBL" + projectNum);
            }

            writer = new XMLWriter(new FileWriter(file), format);
            writer.write(document);
            writer.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
        long lasting2 = System.currentTimeMillis();
        System.out.println("写入XML文件结束,用时"+ (lasting2 - lasting)+"ms");

    }

 注意:addElement方法拼接的是标签的名称,如下图:

dom4j将实体bean转换为规定格式的xml

addAttribute方法后跟两个参数,分别为参数属性与值,如下图:

dom4j将实体bean转换为规定格式的xml

红框与蓝框的testElement.addElement是包含在上一级test标签内的层级关系,如下图:

dom4j将实体bean转换为规定格式的xmldom4j将实体bean转换为规定格式的xml 

分享一点自己的经验心得,希望对大家有所帮助。