java如何导出xml文件
使用DOM4J导出XML文件
DOM4J是一个流行的Java XML处理库,适合生成和操作XML文件。
添加依赖
在Maven项目中添加以下依赖:
<dependency>
<groupId>org.dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>2.1.3</version>
</dependency>
代码示例
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;
import java.io.FileWriter;
public class Dom4jExport {
public static void main(String[] args) throws Exception {
Document document = DocumentHelper.createDocument();
Element root = document.addElement("root");
Element child = root.addElement("child").addText("Example Text");
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));
writer.write(document);
writer.close();
}
}
使用JAXB导出XML文件
JAXB(Java Architecture for XML Binding)适合将Java对象直接序列化为XML。
添加依赖
确保使用Java 8及以上版本(JAXB已内置)。对于Java 9+,需手动添加依赖:

<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>4.0.0</version>
</dependency>
代码示例
import jakarta.xml.bind.JAXBContext;
import jakarta.xml.bind.Marshaller;
import java.io.File;
public class JaxbExport {
public static void main(String[] args) throws Exception {
Person person = new Person("John", 30);
JAXBContext context = JAXBContext.newInstance(Person.class);
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(person, new File("person.xml"));
}
}
// 定义注解类
@XmlRootElement
class Person {
private String name;
private int age;
public Person() {}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 省略getter/setter
}
使用XStream导出XML文件
XStream提供简单的API将对象转换为XML。
添加依赖

<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.20</version>
</dependency>
代码示例
import com.thoughtworks.xstream.XStream;
import java.io.FileWriter;
public class XStreamExport {
public static void main(String[] args) throws Exception {
Person person = new Person("Alice", 25);
XStream xstream = new XStream();
xstream.alias("person", Person.class);
String xml = xstream.toXML(person);
try (FileWriter writer = new FileWriter("person_xstream.xml")) {
writer.write(xml);
}
}
}
使用Java原生SAX导出XML
适合需要高性能或流式处理的场景。
代码示例
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
public class SaxExport {
public static void main(String[] args) throws Exception {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
Document document = factory.newDocumentBuilder().newDocument();
Element root = document.createElement("root");
document.appendChild(root);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(new DOMSource(document), new StreamResult(new File("sax_output.xml")));
}
}
注意事项
- 格式化输出:通过
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true)(JAXB)或调整缩进参数(其他库)可美化XML格式。 - 字符编码:指定编码(如UTF-8)避免乱码,例如:
XMLWriter writer = new XMLWriter(new FileWriter("output.xml"), OutputFormat.createPrettyPrint().setEncoding("UTF-8")); - 大文件处理:对于大型XML,优先使用SAX或StAX(如
javax.xml.stream.XMLStreamWriter)以减少内存占用。






