Чтобы маршаллер XML сгенерировал xsd: date в формате YYYY-MM-DD без определения XmlAdapter, я использовал этот метод для создания экземпляра javax.xml.datatype.XMLGregorianCalendar:
public XMLGregorianCalendar buildXmlDate(Date date) throws DatatypeConfigurationException {
return date==null ? null : DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd").format(date));
}
В результате я инициализировал поле XMLGregorianCalendar класса, сгенерированного компилятором JAXB (в Eclipse):
Date now = new Date();
...
report.setMYDATE(buildXmlDateTime(now));
...
JAXBContext context = JAXBContext.newInstance(ReportType.class);
Marshaller m = context.createMarshaller();
m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
m.marshal(new ObjectFactory().createREPORT(report), writer);
И получил тег, отформатированный как ожидалось:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<REPORT>
...
<MY_DATE>2014-04-30</MY_DATE>
...
</REPORT>