声明:
以下处理仅在xstream-1.4.6版本中得到验证,由于版本不一致导致结果不同,请勿喷。
名词解释:
忽略多余xml节点:即xml字符串中包含了pojo类里边没有的字段,如果不做处理,会抛出Convert异常。
NumberFormatException: 这里指pojo里边某个字段是数字类型,但是xml中值是空串,导致出现NumberFormatException异常的问题。在这里,xstream并没有提供原生的解决办法,需要通过自己继承Convertor类来实现。
下面直接看代码,应该一目了然,在使用前设置以下即可:
xStream.ignoreUnknownElements();//忽略多余的xml节点
//下面是转换常用的数字类型
xStream.registerConverter(new DoubleConverter()
{
@Override
public Object fromString(String str) {
if (StringUtil.isNullOrEmpty(str)) {
return null;
}
return super.fromString(str);
}
});
xStream.registerConverter(new LongConverter()
{
@Override
public Object fromString(String str) {
if (StringUtil.isNullOrEmpty(str)) {
return null;
}
return super.fromString(str);
}
});
xStream.registerConverter(new IntConverter()
{
@Override
public Object fromString(String str) {
if (StringUtil.isNullOrEmpty(str)) {
return null;
}
return super.fromString(str);
}
});