使用XStream库可轻松实现Java对象与XML互转,1. 添加Maven依赖后,2. 定义包含嵌套结构的类如User和Address,3. 通过new XStream()创建实例并设置别名,4. 调用toXML()将对象转为XML字符串,5. 使用fromXML()还原对象,支持私有字段反射访问与循环引用处理。

要将一个复杂的Java对象序列化为XML,使用XStream库是一种简单高效的方式。XStream无需注解也能工作,自动处理对象的字段,包括嵌套对象、集合和循环引用。
添加XStream依赖
如果你使用Maven,在red">pom.xml中加入以下依赖:
com.thoughtworks.xstream xstream 1.4.20
准备Java对象
假设有一个复杂对象结构:用户包含地址列表,地址又有城市和邮编等信息。
定义类如下:
立即学习“Java免费学习笔记(深入)”;
class Address {
private String city;
private String zipCode;
public Address(String city, String zipCode) {
this.city = city;
this.zipCode = zipCode;
}
// toString 省略
}
class User {
private String name;
private int age;
private List addresses;
public User(String name, int age, List addresses) {
this.name = name;
this.age = age;
this.addresses = addresses;
}
}
使用XStream序列化为XML
创建XStream实例,调用toXML()方法即可将对象转为XML字符串。
示例代码:
import com.thoughtworks.xstream.XStream;
import java.util.Arrays;
public class XmlSerializationExample {
public static void main(String[] args) {
// 构建复杂对象
List addresses = Arrays.asList(
new Address("北京", "100001"),
new Address("上海", "200001")
);
User user = new User("张三", 30, addresses);
// 使用XStream序列化
XStream xstream = new XStream();
xstream.alias("user", User.class);
xstream.alias("address", Address.class);
String xml = xstream.toXML(user);
System.out.println(xml);
}
}
输出结果类似:
张三 30 北京 100001 上海 200001
反序列化XML回对象
从XML还原对象也很简单,只需调用fromXML():
User restoredUser = (User) xstream.fromXML(xml); System.out.println(restoredUser.getName()); // 输出:张三
XStream会自动处理类型映射和嵌套结构,不需要手动解析节点。
基本上就这些。只要对象字段有默认构造函数或合理结构,XStream就能顺利序列化和反序列化。对于私有字段,它通过反射访问,无需getter/setter。处理复杂Java对象转XML时,这是最直接的方法之一。










