XStream使用小结
零:特点 简化的API; 一:常见使用方法: 创建 : XStreamxs=newXStream(); 批量添加别名注解: //自动侦查注解 //自动侦查注解与XStream.processAnnotations(Class[]cls)的区别在于性能.自动侦查注解将缓存所有类的类型. xs.autodetectAnnotations(true); Class[]clazzArray=newClass[]{ShunFengRouteResponseBean.class,ShunFengRouteResponseBean.RouteInfo.class,ShunFengRouteResponseBean.ShunfengBody.class}; xs.processAnnotations(clazzArray);//批量添加注解 proessAnnotations方法可以接受一个class类数组,该类中使用@XStreamAlias("别名")注解来标示别名 proessAnnotations重载方法、也可只接受一个class 手动添加别名: //类的别名 xs.alias("Response",ShunFengRouteResponseBean.class); //类中字段的别名(别名,类名,字段名) xs.aliasField("RouteResponse",ShunFengRouteResponseBean.ShunfengBody.class,"routeInfoList"); //将字段添加到该类中所谓xml标签的属性值 //注意:如下:mailno字段必须包含在类ShunfengBody中,否则报错 xs.useAttributeFor(ShunFengRouteResponseBean.ShunfengBody.class,"mailno"); 其他问题处理: 1:javaBean转换成xml后,含有下划线的属性会变化成双下滑线,可以使用replaceAll()方法简单处理,也可以跟以下方法一样解决 2:对于本身含有下划线的字段名,转换时发现无法填充值,可以使用以下方法解决 //XStreamxs=newXStream(newXppDriver(newXmlFriendlyNameCoder("_-","_"))); XStreamxs=newXStream(newDomDriver("UTF-8",newXmlFriendlyNameCoder("-_","_"))); 3:若使用内部类来表达类之间的依赖性时,转换成的xml会出现<out-...>标签 解决方法:1 使用静态内部类 2:使用反射将内部类制空 其他: 1:序列化与反序列化 2:隐式集合 当我们使用集合类时不想显示集合,只显示里面的元素即可. 使用隐式集合: xstream.addImplicitCollection(Person.class,"list"); 3:XML属性 将类的字段转换成类映射元素的一个属性,而不是元素. SingleValueConverter 转换成简单字符串 二:注解 包别名 参考:http://www.52php.cn/article/p-pyykjbwr-bhm.html http://my.oschina.net/exit/blog/156613?fromerr=KOpsTo2n (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |