XStream 去除生成的XML节点的class="list"

使用XStream转换BEAN到XML得时候,由于bean里面有个Collection tasks属性,结果解析出来的节点里面有class="list"属性:<tasks class="list">,很不好看,后来看到一封mail后知道,原来属性Collection tasks初始化成了ArrayList,XStream发现定义的类型和初始化类型不一样就会增加class="list",属性;只要把tasks改成ArrayList tasks就可以了,class="list"不再出现。以下是原文:

 

          > XStream writes a class attribute if the member type does not match the
          > type of the object instance stored in this field. Otherwise it is not
          > necessary to deserialize the objects again. In your case the member seems
          > of type collection, but you use actually an ArrayList? You may set the

          > default implementation for Collection to be an ArrayList.

另一种方式:

  1. public class XMLUtil {  
  2.     private static final XStream xStream = new XStream();  
  3.   
  4.     // 将对象转为XML字符串  
  5.     public static <T> String toXML(T obj) {  
  6.         Class<?> cls = obj.getClass();  
  7.         xStream.alias(cls.getSimpleName().toLowerCase(), cls);  
  8.         [color=red]xStream.aliasSystemAttribute(null"class"); // 去掉 class 属性[/color]  
  9.         return xStream.toXML(obj);  
  10.     }  
  11.   
  12.     // 将XML字符串转为对象  
  13.     @SuppressWarnings({"unchecked"})  
  14.     public static <T> T fromXML(String xml) {  
  15.         return (T) xStream.fromXML(xml);  
  16.     }  
  17. }  

转自:http://cai555.iteye.com/blog/464055

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值