Как использовать JAXB API для генерации классов из xsd? - PullRequest
1 голос
/ 30 декабря 2010

Мне нужно сгенерировать классы bean-компонентов из .xsd без использования команды xjc или ant. Я нашел реализацию в Apache Axis2, но я не могу генерировать артефакты.

Я написал следующий код, но получаю исключение NullPointerException:

SchemaCompiler sc = XJC.createSchemaCompiler();
 URL url = new URL("file://E:\\JAXB\\books.xsd");
 sc.parseSchema(new InputSource(url.toExternalForm()));
 S2JJAXBModel model = sc.bind();
 JCodeModel cm = model.generateCode(null, null);
 cm.build(new FileCodeWriter(new File("E:\\JAXBTest")));

Может кто-нибудь мне помочь / предоставить ссылки ???

Ответы [ 2 ]

1 голос
/ 12 января 2011

Хотя я не пробовал XJC Axis2, я пробовал Sun, и я почти уверен, что ваш URL для схемы неверен: вам нужно три слеша (так как часть «Права» пропущена, так как это локальный ресурс с абсолютный путь)

Или, что еще проще, создайте файл и вызовите toURI () для него, например:

SchemaCompiler sc = XJC.createSchemaCompiler();
File file = new File("D:\\my-dir\\my-schema.xsd");
sc.setErrorListener(... );
sc.parseSchema(new InputSource(file.toURI().toString()));
S2JJAXBModel model = sc.bind();
JCodeModel cm = model.generateCode(null, null);
cm.build(new File("."));

Это произвело нужные файлы для меня. Вам нужен tools.jar на пути к классам. Счастливого поколения кода!

0 голосов
/ 03 октября 2011
    SchemaCompiler sc = XJC.createSchemaCompiler();
    File file = null;
    file = new File("Item.xsd");
    sc.parseSchema(new InputSource(file.toURI().toString()));
    S2JJAXBModel model = sc.bind();

    JCodeModel cm = model.generateCode(null, null);
    cm.build(new File("."));

// У меня есть Item.xsd в локальном каталоге, и этот код сгенерировал классы.Если я удалю этот xsd локально, то получу исключение нулевого указателя.Также обратите внимание, что у меня есть jaxb связанные jar-файлы в пути Java Build проекта eclipse.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...