XStream 是轻量级 Java 库,支持对象与 XML 互转,无需注解或配置文件;Maven 引入依赖后,通过 alias 设置根标签、toXML 序列化、fromXML 反序列化,并需注意无参构造器、字段匹配及安全白名单限制。

XStream 是一个轻量级 Java 库,能将对象直接转成 XML(序列化),也能把 XML 还原为对象(反序列化),不需要手动写映射、不用注解(默认情况下)、也不依赖外部配置文件。
添加 XStream 依赖
如果是 Maven 项目,在 pom.xml 中加入:
基础用法:对象转 XML(序列化)
创建一个简单类,比如用户信息:
public class User {private String name;
private int age;
private String email;
// 构造方法、getter/setter 省略
}
使用 XStream 转换:
立即学习“Java免费学习笔记(深入)”;
XStream xstream = new XStream();xstream.alias("user", User.class); // 指定根标签名为 user
User user = new User("张三", 28, "zhangsan@example.com");
String xml = xstream.toXML(user);
System.out.println(xml);
输出类似:
常用配置技巧
默认 XStream 会用类全限定名作标签,容易冗长。建议开启简洁模式:
-
禁用类名前缀:调用
xstream.autodetectAnnotations(true)或更直接地用xstream.setMode(XStream.NO_REFERENCES)避免 ID 引用 -
忽略字段:用
xstream.omitField(User.class, "email")排除敏感字段 -
重命名字段标签:用
xstream.aliasField("user-name", User.class, "name") -
处理集合:List、Map 默认支持,无需额外配置;若想自定义集合标签名,可用
xstream.addImplicitCollection(User.class, "roles")
从 XML 还原对象(反序列化)
只要 XML 结构和类匹配,一行就能还原:
User restored = (User) xstream.fromXML(xml);注意:
- 类必须有无参构造器(XStream 反射实例化需要)
- 字段名需与 XML 标签名一致(或通过 aliasField 映射)
- 默认不校验 XML 合法性,如需安全控制,应启用 xstream.allowTypesByWildcard 白名单
基本上就这些。XStream 上手快,适合内部系统、配置导出、调试数据交换等场景,但不推荐用于不可信的外部 XML 输入(有反序列化风险,生产环境务必限制类型)。










