Можно ли сгенерировать XSD из класса, аннотированного JAXB? - PullRequest
45 голосов
/ 27 августа 2011

Я написал несколько классов, использующих JAXB для сериализации, и мне было интересно, есть ли способ генерировать XSD-файл для каждого из этих объектов на основе аннотаций.Есть ли инструмент для этого?

Что-то вроде generate-xsd com/my/package/model/Unit.java будет удивительным .Есть ли что-нибудь для этого?

1 Ответ

72 голосов
/ 27 августа 2011

Да, вы можете использовать метод generateSchema в JAXBContext:

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

}
...