最近在看开源中国的app源码,里面用到了一个我之前没用到过的第三方库XStream,借此写下自己的使用心得。
XStream简介
-
使用限制:
JDK版本不能小于1.5. 虽然预处理注解是安全的,但自动侦查注解可能发生竞争条件. -
特点:
简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法,final字段;非公有类,内部类;类不需要默认构造器,完全对象图支持.维护对象引用计数,循环引用. i 提供序列化接口; 自定义转换类型策略; 详细的错误诊断; 快速输出格式;当前支持 JSON 和 morphing.
使用场景 Transport 转换 Persistence 持久化对象 Configuration 配置 Unit Tests 单元测
隐式集合 当我们使用集合类时不想显示集合,只显示里面的元素即可.
使用隐式集合前: <list> <element /> <element /> <list>
使用隐式集合: xstream.addImplicitCollection(Person.class, "list");
使用隐式集合后: <element /> <element />
Xstream注解常用知识:
@XStreamAlias("message") 别名注解 作用目标: 类,字段 '
@XStreamImplicit 隐式集合 @XStreamImplicit(itemFieldName="part") 作用目标: 集合字段
@XStreamConverter(SingleValueCalendarConverter.class) 注入转换器 作用目标: 对象
@XStreamAsAttribute 转换成属性 作用目标: 字段
@XStreamOmitField 忽略字段 作用目标: 字段
Auto-detect Annotations 自动侦查注解 xstream.autodetectAnnotations(true);
自动侦查注解与XStream.processAnnotations(Class[] cls)的区别在于性能.
自动侦查注解将缓存所有类的类型.
案例分析:
- 同一标签下多个同名元素;
- 同一标签下循环多个对象;