如何用Java生成一个xml文件 三种方法拼接和创建xml文档

33次阅读

答案:java中生成xml有三种常用方式:字符串拼接适合简单场景,dom API适合结构化生成,JAXB适合对象映射。1. 字符串拼接通过StringBuilder构造XML内容并写入文件,简单但难维护;2. DOM API使用DocumentBuilder创建XML树结构,支持格式化输出,适合复杂文档;3. JAXB通过注解将Java对象序列化为XML,需引入依赖,适合面向对象开发。选择方法应根据场景权衡易用性与可维护性。

如何用Java生成一个xml文件 三种方法拼接和创建xml文档

在Java中生成XML文件有多种方式,常用的有三种:字符串拼接、使用DOM(Document Object Model)API、以及使用JAXB(Java Architecture for XML Binding)。下面分别介绍这三种方法,并给出示例代码。

1. 字符串拼接方式生成XML

最简单直接的方式是通过字符串拼接构造XML内容,然后写入文件。虽然不推荐用于复杂结构(容易出错),但适合简单的场景。

优点:简单直观,无需引入额外库。
缺点:不易维护,容易出现格式或转义错误。

import java.io.*;  public class StringConcatXml {     public static void main(String[] args) {         StringBuilder xml = new StringBuilder();         xml.append("<?xml version="1.0" encoding="UTF-8"?>n");         xml.append("<person>n");         xml.append("  <name>张三</name>n");         xml.append("  <age>25</age>n");         xml.append("</person>");          try (FileWriter writer = new FileWriter("person_concat.xml")) {             writer.write(xml.toString());             System.out.println("XML文件已生成:person_concat.xml");         } catch (IOException e) {             e.printStackTrace();         }     } }

2. 使用DOM API创建XML文档

Java内置的DOM API可以程序化地构建XML树结构,然后将文档写入文件。这种方式更安全、结构清晰,适合动态生成复杂XML。

优点:结构清晰,支持验证和格式化输出
缺点:内存消耗较大,适合中小文件。

import org.w3c.dom.*; import javax.xml.parsers.*; import javax.xml.transform.*; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.File;  public class DomCreateXml {     public static void main(String[] args) {         try {             DocumentBuilderFactory factory = DocumentBuilderFactory.newinstance();             DocumentBuilder builder = factory.newDocumentBuilder();             Document doc = builder.newDocument();              // 创建根元素             Element root = doc.createElement("person");             doc.appendChild(root);              // 添加子元素             Element name = doc.createElement("name");             name.setTextContent("李四");             root.appendChild(name);              Element age = doc.createElement("age");             age.setTextContent("30");             root.appendChild(age);              // 写入文件             TransformerFactory transformerFactory = TransformerFactory.newInstance();             Transformer transformer = transformerFactory.newTransformer();             transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // 格式化输出             DOMSource source = new DOMSource(doc);             StreamResult result = new StreamResult(new File("person_dom.xml"));             transformer.transform(source, result);              System.out.println("DOM方式生成XML完成:person_dom.xml");          } catch (Exception e) {             e.printStackTrace();         }     } }

3. 使用JAXB生成XML

JAXB允许通过Java对象自动映射为XML,适合面向对象开发。需要定义POJO类并添加注解。

立即学习Java免费学习笔记(深入)”;

如何用Java生成一个xml文件 三种方法拼接和创建xml文档

法语写作助手

法语助手旗下的AI智能写作平台,支持语法、拼写自动纠错,一键改写、润色你的法语作文。

如何用Java生成一个xml文件 三种方法拼接和创建xml文档 31

查看详情 如何用Java生成一个xml文件 三种方法拼接和创建xml文档

优点:简洁,与对象模型结合紧密。
缺点:JDK 11+需手动引入JAXB依赖。

首先定义一个实体类:

import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlRootElement;  @XmlRootElement(name = "person") public class Person {     private String name;     private int age;      // 默认构造函数(JAXB需要)     public Person() {}      public Person(String name, int age) {         this.name = name;         this.age = age;     }      @XmlElement     public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      @XmlElement     public int getAge() {         return age;     }      public void setAge(int age) {         this.age = age;     } }

然后使用JAXB工具类生成XML:

import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; import java.io.File;  public class JaxbCreateXml {     public static void main(String[] args) {         Person person = new Person("王五", 35);          try {             JAXBContext context = JAXBContext.newInstance(Person.class);             Marshaller marshaller = context.createMarshaller();             marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); // 格式化输出              marshaller.marshal(person, new File("person_jaxb.xml"));             System.out.println("JAXB方式生成XML完成:person_jaxb.xml");          } catch (JAXBException e) {             e.printStackTrace();         }     } }

如果使用maven项目,记得添加JAXB依赖:

<dependency>     <groupId>jakarta.xml.bind</groupId>     <artifactId>jakarta.xml.bind-api</artifactId>     <version>4.0.0</version> </dependency> <dependency>     <groupId>org.glassfish.jaxb</groupId>     <artifactId>jaxb-runtime</artifactId>     <version>4.0.2</version> </dependency>

基本上就这些。三种方法各有适用场景:字符串拼接适合简单快速输出;DOM适合需要精确控制结构的场景;JAXB适合对象数据转XML的业务系统。选择合适的方法能提高开发效率和代码可维护性。

text=ZqhQzanResources