XStream Converter Date

类如下:

public class bookinfo implements java.io.Serializable
{
private Long id;

//Fields
private java.lang.Long bsno;
private java.lang.String bookname;
private java.lang.String isbn;
private java.lang.String booktype;
private java.lang.String author;
private java.util.Date publishdate;
private java.lang.Long quantityperpackage;
private java.lang.Long height;

}


在bookinfo中的publishdate是一个date对象,在用XStream做转换的时,由于XStream自带的DateConverter 不能转换形如“2010-10-07”这样的日期格式,只能自定义一个转换器

public class DateConverter  implements Converter {

@Override
public boolean canConvert(Class arg0) {

return Date.class == arg0;
}
@Override
public void marshal(Object arg0, HierarchicalStreamWriter arg1,
MarshallingContext arg2) {


}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext arg1) {
GregorianCalendar calendar = new GregorianCalendar();
SimpleDateFormat dateFm = new SimpleDateFormat("yyyy-MM-dd"); //格式化当前系统日期
try {
calendar.setTime(dateFm.parse(reader.getValue()));
} catch (ParseException e) {
throw new ConversionException(e.getMessage(), e);
}
return calendar.getTime();

}

}


最后在程序中注册构造的转换器。。。。

   XStream xstream = new XStream(new DomDriver());
xstream.registerConverter(new DateConverter());




同样的,在从XML向java对象转换时,如果Long对应的是空字符串,Xstream也会报错,例如,XML文件中如果quantityperpackage的值为空,则转换为Long时会报错,则,同样的编写转换器,在转换器中判断,如果XML中对应的为空,则让Long等于null。

对象的转换器如下:

public class LongConverter  implements Converter {

@Override
public boolean canConvert(Class arg0) {

return Long.class == arg0;
}
@Override
public void marshal(Object arg0, HierarchicalStreamWriter arg1,
MarshallingContext arg2) {


}
@Override
public Object unmarshal(HierarchicalStreamReader reader,
UnmarshallingContext arg1) {
Long longnum = new Long("1");
System.out.println(reader.getValue());
if("".equals(reader.getValue()))
{
System.out.println("long is null");
longnum = null;
return longnum;
}
else{
longnum = longnum.valueOf(reader.getValue());
System.out.println("long is not null");
return longnum;
}


}

}


同样在程序中注册构造的转换器。。。。

XStream xstream = new XStream(new DomDriver());
xstream.registerConverter(new LongConverter());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值