Я использую xjc для генерации классов Java из XML-схемы, и следующее является выборкой XSD.
По большей части сгенерированные классы прекрасны, но для вышеупомянутого блока я получил бы что-то как:
public List
со следующим комментарием выше его:
* You are getting this "catch-all" property because of the following reason:
* The field name "UnstructuredName" is used by two different parts of a schema. See:
* line XXXX of file:FILE.xsd
* line XXXX of file:FILE.xsd
* To get rid of this property, apply a property customization to one
* of both of the following declarations to change their names:
* Gets the value of the content property.
Я поместил комментарий в конце двух рассматриваемых строк.
В данный момент я не думаю, что будет легко изменить схему, так как это было решено между поставщиками, и я не захочу идти этим путем (если возможный), поскольку это замедлит прогресс вполне немного.
Я искал и нашел эту страницу, внешняя настройка, что я хочу сделать? Я был главным образом рабочим со сгенерированными классами, таким образом, я не совсем знаком с процессом, который генерирует эти классы. Простой пример "настройки свойства" был бы ярким! Альтернативный метод генерации классов Java был бы прекрасен, пока схема может все еще использоваться.
Править: Я должен разъяснить что два UnstructuredName
действительно тот же элемент.
Существенная проблема здесь в том, что у вас есть
, состоящий из
, что на Java переводится как « Список
вещей». Структура типов Java недостаточно гибкая, чтобы лучше представить это.
Настройка привязки может помочь вам, но в этом случае я подозреваю, что нет, поскольку я не вижу лучшего способа представления этой информации.
Альтернативный метод, который я использовал в прошлом, заключается в том, чтобы сначала передать схему через простое преобразование XSLT, переупорядочивая компоненты во что-то более дружественное к JAXB, сохраняя при этом те же структуры, которые будут иметь документы в действительности. Таким образом, вы можете «изменить» схему, не изменяя исходную.