Java 对象转 XML 的方法
在 Java 中,将对象转换为 XML(序列化)有几种常用的方法,以下是几种主流的实现方式:

使用 JAXB (Java Architecture for XML Binding)
JAXB 是 Java 标准库中用于 XML 绑定的 API(Java 6+ 内置)。
步骤:
- 为类添加注解:
import javax.xml.bind.annotation.*;
@XmlRootElement(name = "person") @XmlAccessorType(XmlAccessType.FIELD) public class Person { @XmlElement private String name;
@XmlElement
private int age;
// 无参构造方法(必须)
public Person() {}
// getter 和 setter 方法
// ...
2. **转换方法**:
```java
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;
import java.io.StringWriter;
public class ObjectToXml {
public static String convertToXml(Object obj) throws Exception {
JAXBContext context = JAXBContext.newInstance(obj.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
StringWriter writer = new StringWriter();
marshaller.marshal(obj, writer);
return writer.toString();
}
}
- 使用示例:
Person person = new Person(); person.setName("张三"); person.setAge(30);
String xml = ObjectToXml.convertToXml(person); System.out.println(xml);
## 2. 使用 XStream
XStream 是一个第三方库,使用简单,功能强大。
### 添加依赖 (Maven):
```xml
<dependency>
<groupId>com.thoughtworks.xstream</groupId>
<artifactId>xstream</artifactId>
<version>1.4.18</version>
</dependency>
使用示例:
import com.thoughtworks.xstream.XStream;
public class ObjectToXml {
public static String convertToXml(Object obj) {
XStream xstream = new XStream();
// 设置别名(可选)
xstream.alias("person", Person.class);
return xstream.toXML(obj);
}
}
使用 Jackson
Jackson 是一个流行的 JSON 处理库,也支持 XML。

添加依赖 (Maven):
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.13.0</version>
</dependency>
使用示例:
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
public class ObjectToXml {
public static String convertToXml(Object obj) throws Exception {
XmlMapper xmlMapper = new XmlMapper();
return xmlMapper.writeValueAsString(obj);
}
}
使用 DOM API 手动构建
对于简单的 XML 结构,可以使用标准的 DOM API:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
public class ObjectToXml {
public static String convertToXml(Person person) throws Exception {
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("person");
doc.appendChild(rootElement);
Element name = doc.createElement("name");
name.appendChild(doc.createTextNode(person.getName()));
rootElement.appendChild(name);
Element age = doc.createElement("age");
age.appendChild(doc.createTextNode(String.valueOf(person.getAge())));
rootElement.appendChild(age);
// 转换为字符串
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
return writer.toString();
}
}
性能与选择建议
- JAXB:适合标准 Java 项目,无需额外依赖,性能较好
- XStream:API 简单易用,功能强大,适合复杂对象
- Jackson:如果已经在使用 Jackson 处理 JSON,可以统一使用
- DOM API:适合需要完全控制 XML 结构的情况,但代码较繁琐
对于大多数企业应用,推荐使用 JAXB 或 XStream,它们提供了良好的平衡点 between 易用性和功能。

