JAXB: генерировать классы Java только для подмножества типов XSD - PullRequest
8 голосов
/ 02 ноября 2011

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

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

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

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

1 Ответ

1 голос
/ 28 июля 2018

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

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

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