JAXB: генерировать классы Java только для подмножества типов XSD

#java #jaxb #jaxb2

#java #jaxb #jaxb2

Вопрос:

У меня есть пара огромных файлов определения схемы XML (XSD), и я хочу генерировать только для подмножества определенных типов соответствующие классы Java.

Точнее, у меня есть список «корневых» типов, которые я хочу преобразовать в классы Java, включая все типы, необходимые для этих корневых типов.

Возможно ли определить некоторые «корневые» типы в файле привязок JAXB и указать JAXB преобразовать только их со всеми их зависимыми типами в классы Java и игнорировать все остальные ненужные типы?

Заранее спасибо.

Ответ №1:

Может быть более простой способ, но один из способов — сделать копии XSD и удалить все типы XML из копий, за исключением корневых типов, которые вы хотите, с их зависимостями. Затем примените xjc к копиям вместо исходных.

Вы можете автоматизировать этот процесс с помощью XSLT и инструментов автоматизации сборки, таких как Maven, Gradle, Ant и т. Д. Сначала вы пишете таблицу стилей XSLT, которая преобразует XSD для копирования только корневых типов с зависимостями, и сохраняете результат во временном местоположении (например, в папке target / generated-sources с Maven). Затем, например, с помощью Maven, вы автоматизируете процесс с помощью плагинов сборки в вашем pom.xml:

  1. Запустите преобразование XSLT с помощью плагина Maven XML, используя предпочтительно Saxon в качестве процессора XSLT.
  2. Запустите плагин JAXB2 Maven для генерации классов Java из новых копий XSD (с параметрами schemaDirectory / schemaIncludes).