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