Версия от @Ben Carlson имеет проблему, если ваше дерево объектов содержит другие классы из того же пакета, что и DateTime.
Более надежная версия для преобразования DateTime в XML и обратно, которая также не требует отражения:
public static class JodaTimeConverter implements Converter
{
@Override
@SuppressWarnings("unchecked")
public boolean canConvert( final Class type )
{
return DateTime.class.isAssignableFrom( type );
}
@Override
public void marshal( Object source, HierarchicalStreamWriter writer, MarshallingContext context )
{
writer.setValue( source.toString() );
}
@Override
@SuppressWarnings("unchecked")
public Object unmarshal( HierarchicalStreamReader reader,
UnmarshallingContext context )
{
return new DateTime( reader.getValue() );
}
}
Зарегистрируйте конвертер в XStream, чтобы использовать его:
XStream xstream = new XStream();
xstream.registerConverter(new JodaTimeConverter());