Сценарий таков: у меня есть куча схем в формате .xsd, которые я могу сгенерировать с помощью XJC. Однако мне не нравится один из классов, созданных с использованием этого подхода, в результате я хотел бы вручную подобрать замену для этого конкретного класса. На этот класс ссылаются другие классы в схеме. Есть ли способ сделать это?
Как создать классы JAXB с помощью XJC, используя некоторые существующие классы Java?
Ответы (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
Вы можете вручную создать класс, который вам нужно использовать аннотацию jaxb из пакета javax.xml.bind.annotation в вашем классе.
Ниже приведена ссылка для получения подробной информации о том же. http://docs.oracle.com/javaee/5/api/javax/xml/bind/annotation/package-summary.html
но если вы можете уточнить свой вопрос, например, что вам не понравилось в автоматически сгенерированных классах, например, имя класса или имя пакета или что-то еще, это будет большим подспорьем для ответа на этот вопрос.
Пока вы аннотируете поля/свойства одними и теми же значениями, можно вручную изменить свой класс, а также изменить любые ссылки (включая класс ObjectFactory).