Как создать классы JAXB с помощью XJC, используя некоторые существующие классы Java?

Сценарий таков: у меня есть куча схем в формате .xsd, которые я могу сгенерировать с помощью XJC. Однако мне не нравится один из классов, созданных с использованием этого подхода, в результате я хотел бы вручную подобрать замену для этого конкретного класса. На этот класс ссылаются другие классы в схеме. Есть ли способ сделать это?


person Albert Cheng    schedule 29.05.2013    source источник
comment
возможный дубликат сопоставления jaxb xjc с существующими объектами домена   -  person bdoughan    schedule 29.05.2013


Ответы (3)


Вы можете использовать внешний файл привязки, чтобы настроить XJC так, как вам нужно. В приведенном ниже примере существующий класс com.example.Foo будет использоваться для сложного типа с именем Foo.

binding.xml

<jxb:bindings schemaLocation="yourSchema.xsd">
    <jxb:bindings node="//xs:complexType[@name='Foo']">
        <jxb:class ref="com.example.Foo"/>
    </jxb:bindings>
</jxb:bindings>

Вызов XJC

xjc -d outputDir -b binding.xml yourSchema.xsd
person bdoughan    schedule 29.05.2013

Вы можете вручную создать класс, который вам нужно использовать аннотацию jaxb из пакета javax.xml.bind.annotation в вашем классе.

Ниже приведена ссылка для получения подробной информации о том же. http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/package-summary.html

но если вы можете уточнить свой вопрос, например, что вам не понравилось в автоматически сгенерированных классах, например, имя класса или имя пакета или что-то еще, это будет большим подспорьем для ответа на этот вопрос.

person Rudra    schedule 29.05.2013

Пока вы аннотируете поля/свойства одними и теми же значениями, можно вручную изменить свой класс, а также изменить любые ссылки (включая класс ObjectFactory).

person Khaled Abdel-Salam    schedule 29.05.2013