Does Simple XML support any Date formats other than the format 2007-01-03 18:05:11.234 GMT
mentioned in the tutorial? If not, should I implement a custom Transformer
, or is there an easier solution?
I created a test case for xsd:dateTime parsing which fails at the moment:
import org.junit.Test;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
import static org.junit.Assert.assertEquals;
public class XsdDateTimeSimpleXmlTest {
String DUMMY_XML = "<dummy><date>2011-12-01T11:46:52</date></dummy>";
@Test
public void testDateTimeDeserialization() throws Exception {
Dummy expected = new Dummy(expectedDate());
Dummy actual = deserialize(DUMMY_XML);
assertEquals(expected, actual);
}
Date expectedDate() {
Calendar c = Calendar.getInstance();
c.set(2011, 12-1, 1, 11, 46, 52);
c.set(Calendar.MILLISECOND, 0);
c.setTimeZone(TimeZone.getTimeZone("UTC"));
return c.getTime();
}
Dummy deserialize(String xml) throws Exception {
Deserializer<Dummy> des = new Deserializer<Dummy>(Dummy.class);
return des.read(xml);
}
@Root
static class Dummy {
@Element
Date date;
Dummy() { }
Dummy(Date date) {
this.date = date;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Dummy dummy = (Dummy) o;
if (!date.equals(dummy.date)) return false;
return true;
}
@Override
public int hashCode() {
return date.hashCode();
}
@Override
public String toString() {
return "Dummy{" +
"date=" + date +
'}';
}
}
}
I get java.text.ParseException: Unparseable date: "2011-12-01T11:46:52"
.