类如下:
在bookinfo中的publishdate是一个date对象,在用XStream做转换的时,由于XStream自带的DateConverter 不能转换形如“2010-10-07”这样的日期格式,只能自定义一个转换器
最后在程序中注册构造的转换器。。。。
同样的,在从XML向java对象转换时,如果Long对应的是空字符串,Xstream也会报错,例如,XML文件中如果quantityperpackage的值为空,则转换为Long时会报错,则,同样的编写转换器,在转换器中判断,如果XML中对应的为空,则让Long等于null。
对象的转换器如下:
同样在程序中注册构造的转换器。。。。
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());