webentwicklung-frage-antwort-db.com.de

Ist es möglich, eine XSD aus einer JAXB-annotierten Klasse zu generieren?

Ich habe eine Reihe von Klassen mit JAXB für die Serialisierung geschrieben und mich gefragt, ob es eine Möglichkeit gibt, eine XSD-Datei für jedes dieser Objekte basierend auf den Anmerkungen zu generieren. Gibt es ein Tool dafür?

Etwas wie generate-xsd com/my/package/model/Unit.Java wäre genial. Gibt es dafür etwas?

45
Naftuli Kay

Ja, Sie können die generateSchema -Methode in JAXBContext verwenden:

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

Sie nutzen eine Implementierung von SchemaOutputResolver, um zu steuern, wohin die Ausgabe geht:

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;
    }

}
73
bdoughan