java生成XML文件

最近项目有个需求,需要根据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>
相关推荐
2601_9622845010 分钟前
Python 和Java 哪个更适合做自动化测试?
java·自动化测试·python·接口测试·性能测试
liliangcsdn13 分钟前
因子权重矩阵处理-滞回缓冲带+降频稳定化动态重选
开发语言·python·算法
随遇而安zx21 分钟前
【多线程】---AQS 原理 知识点(设计思想与源码深度解析)
java·多线程·aqs
LXMXHJ25 分钟前
springboot中的线程操作
java·spring boot·后端·线程
泡泡鱼(敲代码中)31 分钟前
Python语法技术学习笔记
开发语言·笔记·python·学习·pycharm
敲代码的嘎仔33 分钟前
自己设计了一个兑换码算法:自增ID + Base32转码 + 按位加权签名 + 异或混淆,面试被追问细节时终于不用慌了
java·数据库·mysql·算法·微服务·面试·职场和发展
CTA终结者37 分钟前
量化实现难,先看交易想法有没有说清
人工智能·python
hqyjzsb1 小时前
Python 技术人转型 AI:CAIE Level I、Level II 对比怎么选
开发语言·人工智能·python·金融·数据挖掘·数据分析·aigc
m0_587383001 小时前
外卖CPS系统开发实战:从架构设计到运营落地全指南
java·spring·小程序·架构·需求分析
zhangzeyuaaa1 小时前
Python asyncio 事件循环演进:从手动管理到现代化实践
java·服务器·python