dom4j将实体bean转换为规定格式的xml
需求:将实体bean生成固定格式的xml文件,实体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方法拼接的是标签的名称,如下图:
addAttribute方法后跟两个参数,分别为参数属性与值,如下图:
红框与蓝框的testElement.addElement是包含在上一级test标签内的层级关系,如下图:
分享一点自己的经验心得,希望对大家有所帮助。