Est-il possible de générer un XSD à partir d'une classe annotée JAXB?

J'ai écrit un certain nombre de classes en utilisant JAXB pour la sérialisation et je me demandais s'il y avait un moyen de générer un fichier XSD pour chacun de ces objets en fonction des annotations. Est-il un outil pour cela?

Quelque Chose comme generate-xsd com/my/package/model/Unit.java est génial. Existe-t-il quelque chose pour faire cela?

44
demandé sur Naftuli Kay 2011-08-27 05:52:25

1 réponses

Oui, vous pouvez utiliser la méthode generateSchema sur JAXBContext:

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

Vous utilisez une implémentation de SchemaOutputResolver pour contrôler où va la sortie:

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
répondu Blaise Doughan 2011-08-27 10:53:17