Java创建XML文件最常用、最稳妥的方式是使用DOM结合Transformer,它原生支持、逻辑清晰、适合中小规模XML生成;先用DOM构建树形结构,再通过Transformer序列化为文件并设置UTF-8编码。

Java创建XML文件最常用、最稳妥的方式是使用DOM(Document Object Model)结合Transformer,它原生支持、逻辑清晰、适合中小规模XML生成。
用DOM构建XML文档结构
DOM把整个XML当作树形对象来操作,先创建Document对象,再逐层添加元素、属性和文本内容。
- 通过DocumentBuilder获取空的Document实例
- 用createElement()创建节点,appendChild()组装父子关系
- 用setAttribute()添加属性,createTextNode()设置文本值
例如:创建一个,需先建book元素,设id属性,再建title子元素并追加文本节点。
用Transformer把DOM写入文件
DOM只在内存中构建结构,必须用TransformerFactory和Transformer将其序列化为实际XML文件。
立即学习“Java免费学习笔记(深入)”;
- 创建Transformer后可调用setOutputProperty()美化格式(如缩进、换行)
- 用DOMSource包装Document,StreamResult指向目标文件路径
- 调用transform()完成写入,自动处理转义、编码(推荐显式设
encoding="UTF-8")
简化写法:用JAXB(适合JavaBean转XML)
如果已有POJO类且字段与XML结构高度对应,JAXB更简洁——只需加@XmlRootElement等注解,用Marshaller一键输出。
- 类加@XmlRootElement,字段加@XmlElement或@XmlAttribute
- 创建JAXBContext绑定类,获取Marshaller
- 调用marshal()直接写入File或OutputStream
注意:JAXB在JDK 11+已移出默认模块,需单独引入jakarta.xml.bind:jakarta.xml.bind-api及实现库。
避免常见坑
生成XML时容易忽略编码和特殊字符处理:
- 确保Transformer设置了
OutputKeys.ENCODING为"UTF-8",否则中文可能乱码 - 文本内容含
、&等字符时,DOM会自动转义,无需手动替换 - 不要用字符串拼接生成XML——无法保证格式合法,易被注入恶意标签
不复杂但容易忽略。










