web-dev-qa-db-ja.com

JAXB注釈付きクラスからXSDを生成することは可能ですか?

シリアル化のためにJAXBを使用して多くのクラスを作成しましたが、アノテーションに基づいてこれらのオブジェクトごとにXSDファイルを生成する方法があるかどうか疑問に思っていました。このためのツールはありますか?

何かのようなもの generate-xsd com/my/package/model/Unit.Javaawesomeになります。これを行うための何かはありますか?

45
Naftuli Kay

はい、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;
    }

}
73
bdoughan