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