49 votes

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. Existe-t-il un outil pour cela?

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

76voto

Blaise Doughan Points 75613

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

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

Vous tirez parti d'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;
    }

}
 

1voto

Skeptic Points 915

Oui, regardez la génération de schéma dans ce guide.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X