Как вы определяете формат даты, используемый при маршалах JAXB xsd: dateTime?



0 Answers

Я использую SimpleDateFormat для создания XMLGregorianCalendar, например, в этом примере:

public static XMLGregorianCalendar getXmlDate(Date date) throws DatatypeConfigurationException {
    return DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd").format(date));
}

public static XMLGregorianCalendar getXmlDateTime(Date date) throws DatatypeConfigurationException {
    return DatatypeFactory.newInstance().newXMLGregorianCalendar(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss").format(date));
}

Первый метод создает экземпляр XMLGregorianCalendar, который отформатирован XML-маршаллером как действительная дата xsd: второй, приводит к действительному xsd: dateTime.

Question

Когда JAXB XMLGregorianCalendar объект даты ( XMLGregorianCalendar ) в элемент xsd: dateTime, как вы можете указать формат полученного XML?

Например: Формат данных по умолчанию использует миллисекунды <StartDate>2012-08-21T13:21:58.000Z</StartDate> Мне нужно опустить миллисекунды. <StartDate>2012-08-21T13:21:58Z</StartDate>

Как я могу указать формат выходной формы / даты, который я хочу использовать? Я использую javax.xml.datatype.DatatypeFactory для создания объекта XMLGregorianCalendar .

XMLGregorianCalendar xmlCal = datatypeFactory.newXMLGregorianCalendar(cal);



Related