¿Es posible generar un XSD a partir de una clase anotada por JAXB?


He escrito varias clases usando JAXB para serialización y me preguntaba si había una manera de generar un archivo XSD para cada uno de estos objetos basado en las anotaciones. ¿Hay alguna herramienta para esto?

Algo como generate-xsd com/my/package/model/Unit.java sería impresionante. ¿Existe algo para hacer esto?

Author: Naftuli Kay, 2011-08-27

1 answers

Sí, puede usar el método generateSchema en JAXBContext:

JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
SchemaOutputResolver sor = new MySchemaOutputResolver();
jaxbContext.generateSchema(sor);

Aprovechas una implementación de SchemaOutputResolver para controlar hacia dónde va la salida:

public class MySchemaOutputResolver extends SchemaOutputResolver {

    public Result createOutput(String namespaceURI, String suggestedFileName) throws IOException {
        File file = new File(suggestedFileName);
        StreamResult result = new StreamResult(file);
        result.setSystemId(file.toURI().toURL().toString());
        return result;
    }

}
 69
Author: Blaise Doughan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-08-27 10:53:17