最近项目有个需求,需要根据java对象生成XML文件,并且将文件以字节流的形式发送出去。
具体不罗嗦,直接上代码。
工具包:dom4j,不是maven项目的同学去下载dom4j依赖以后,在项目下建一个lib目录就能引入。
java
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
知识点看demo代码,注释很详细
java
import lombok.extern.java.Log;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import java.io.*;
import java.util.Arrays;
public class MakeDocumentApp {
public static void main(String[] args) {
// 1.声明文件名称
String fileName = "xml_test";
// 2.创建dom对象
Document document = DocumentHelper.createDocument();
// 3.添加节点,根据需求添加,这里我只是设置了一个head节点,下面有name和age两个子节点
Element head = document.addElement("Head");
Element name = head.addElement("name");
name.setText("LQ");
Element age = head.addElement("age");
age.addText("18");
// 4、格式化模板
//OutputFormat format = OutputFormat.createCompactFormat();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
// 5、生成xml文件
ByteArrayOutputStream out = new ByteArrayOutputStream();
try {
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
writer.close();
} catch (IOException e) {
System.out.println("生成xml文件失败。文件名【" + fileName + "】");
}
// 6、生成的XML文件
// 7、利用文件输出流输出到文件, 文件输出到了您的项目根目录下了
try (FileOutputStream fos = new FileOutputStream(fileName + ".xml")) {
fos.write(out.toByteArray());
} catch (IOException e) {
e.printStackTrace();
}
}
}
本来都保存了,回来贴一下成果图。
java
<?xml version="1.0" encoding="UTF-8"?>
<Head>
<name>LQ</name>
<age>18</age>
</Head>