Como fijar XMLGregorianCalendar
Estoy tratando de fijar un tipo de dato XMLGregorianCalendar mediante la siguiente forma:
c.setTime(getFecha()); //getFecha() consigue un objeto de tipo date con informacion de una base SQL con el formato dd/MM/YYYY
try {
XMLGregorianCalendar date=null;
date = DatatypeFactory.newInstance().newXMLGregorianCalendar();
} catch (DatatypeConfigurationException ex) {
}
Pero lo unico que consigo es lo siguiente:
java.lang.IllegalStateException: com.sun.org.apache.xerces.internal.jaxp.datatype.XMLGregorianCalendarImpl#getXMLSchemaType() :Invalid set of fields set for XMLGregorianCalendar
Que es lo que estoy haciendo mal??
- Inicie sesión o regístrese para enviar comentarios
construcción
Yo he creado esos objetos con el método que recibe un GregorianCalendar. Y por ahi te conviene tener la DatatypeFactory a la mano en vez de crearla cada vez que necesitas pedirle un objeto.
pero nunca he visto ese error que mencionas. Supongo que el método que usas es para crear un XMLGregorianCalendar con la fecha en que se crea. Habría que ver en qué linea se arroja la excepción, porque no creo que sea cuando creas la instancia.
JAXB
Me falto agregar la parte de jaxb:
javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(comprobante.getClass().getPackage().getName());
javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
marshaller.marshal(comprobante, System.out);//Aqui es donde truena
} catch (javax.xml.bind.JAXBException ex) {
// XXXTODO Handle exception
java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
}
Lo raro es que si quito la parte de las fechas se ejecuta correctamente y genera el XML bien.