Мы используем JAXB для генерации классов Java и столкнулись с несколькими случаями, когда сгенерированные множественные имена методов не верны.Например, где мы ожидаем getPhysicians
, мы получаем getPhysicien
.Как бы мы изменили, как JAXB использует множественные методы?
Схема:
<xs:complexType name="physician">
<xs:sequence>
...
</xs:sequence>
</xs:complexType>
<xs:complexType name="physicianList">
<xs:sequence>
<xs:element name="Physician"
type="physician"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
Сгенерированный код Java:
...
public class PhysicianList {
...
@XmlElement(name = "Physician")
protected List<Physician> physicien;
...
public List<Physician> getPhysicien() {
if (physicien == null) {
physicien = new ArrayList<Physician>();
}
return this.physicien;
}
Обновление
На этот вопрос ответил Блез.Однако я предпочитаю не смешивать проблемы, такие как настройки JAXB, в схеме XML.Так что для тех из вас, кто предпочитает то же самое, вот файл привязки JAXB, который выполняет то же самое, что предлагал Блейз, не допуская настройки JAXB в схеме:
<jaxb:bindings xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
version="2.0">
<jaxb:bindings schemaLocation="myschema.xsd">
<jaxb:bindings node="//xs:complexType[@name='physicianList']//xs:element[@name='Physician']">
<jaxb:property name="physicians"/>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>