Quem usa JAXB e Axis2 para gerar arquivos XML, sabe que a geração de uma tag data é do tipo javax.xml.datatype.XMLGregorianCalendar e no caso de quem desenvolve usando um java.util.Date precisará converter.

Este exemplo converte em um XMLGregorianCalendar no formato yyyy-MM-dd, mas nada impede de você personalizar a classe e escolher o seu formato, tanto para o XMLGregorianCaledar com o java.date.Util.
Então segue um exemplo para conversão:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;
import javax.xml.datatype.XMLGregorianCalendar;
import com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl;
import util.XMLGregorianCalendarConversionUtil;
public class TesteDataXML {
/**
* @ LyOn
*/
public static void main(String[] args) {
Date dataJU = new Date();// Cria um date com a data atual
System.out.println("Data atual (Java Util) sem formatação: " + dataJU);
GregorianCalendar gc = new GregorianCalendar();
XMLGregorianCalendar dataXmlGC = new XMLGregorianCalendarImpl(gc);
System.out.println("Data atual (XML Gregorian Caledar) sem formatação: "
+ dataXmlGC);
System.out.println("Conversão de XML Gregorian Caledar em Java Util: "
+ new SimpleDateFormat("dd/MM/yyyy").format(
XMLGregorianCalendarConversionUtil.asDate(dataXmlGC)));
System.out.println("Conversão de Java Util em XML Gregorian Calendar: "
+ XMLGregorianCalendarConversionUtil.asXMLGregorianCalendar(dataJU));
}
}
Classe XMLGregorianCalendarConversionUtil:
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* Classe para converção entre datas do tipo java.util.Date e
* XMLGregorianCalendar
*/
public class XMLGregorianCalendarConversionUtil {
/* DatatypeFactory cria novos objetos que javax.xml.datatype mapa XML
* para objetos Java. */
private static DatatypeFactory df = null;
static {
try {
df = DatatypeFactory.newInstance();
} catch(DatatypeConfigurationException e) {
String msg = "Erro ao tentar obter uma nova instância de DatatypeFactory";
throw new IllegalStateException(msg, e);
}
}
/* Converte um java.util.Date em uma instância de XMLGregorianCalendar
* no formato yyyy-MM-dd, sem os milisegundos
*/
public static XMLGregorianCalendar asXMLGregorianCalendar(java.util.Date date) {
if(date == null) {
return null;
} else {
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
XMLGregorianCalendar xmlGregorianCalendar = df.newXMLGregorianCalendar();
xmlGregorianCalendar.setDay(calendar.get(Calendar.DAY_OF_MONTH));
xmlGregorianCalendar.setMonth(calendar.get(Calendar.MONTH));
xmlGregorianCalendar.setYear(calendar.get(Calendar.YEAR));
return xmlGregorianCalendar;
}
}
// Converte um XMLGregorianCalendar para uma instância de java.util.Date
public static java.util.Date asDate(XMLGregorianCalendar xmlGC) {
if(xmlGC == null) {
return null;
} else {
return xmlGC.toGregorianCalendar().getTime();
}
}
}
É isso ai, fica a dica para meus colegar programadores ;)
Qualquer dúvida deixe um recado.
Até a próxima.

Nenhum comentário :
Postar um comentário