Java如何创建XML文件 Java生成XML节点教程

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()设置文本值

例如:创建一个Java入门,需先建book元素,设id属性,再建title子元素并追加文本节点。

用Transformer把DOM写入文件

DOM只在内存中构建结构,必须用TransformerFactoryTransformer将其序列化为实际XML文件。

  • 创建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——无法保证格式合法,易被注入恶意标签

不复杂但容易忽略。