シリアル化のためにJAXBを使用して多くのクラスを作成しましたが、アノテーションに基づいてこれらのオブジェクトごとにXSDファイルを生成する方法があるかどうか疑問に思っていました。このためのツールはありますか?
何かのようなもの generate-xsd com/my/package/model/Unit.Java
はawesomeになります。これを行うための何かはありますか?
はい、JAXBContextでgenerateSchema
メソッドを使用できます。
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
SchemaOutputResolver sor = new MySchemaOutputResolver();
jaxbContext.generateSchema(sor);
SchemaOutputResolver
の実装を活用して、出力先を制御します。
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;
}
}