У меня проблема с генерацией класса JAXB, с которой я надеялся получить помощь. Вот часть XML, которая является источником моей проблемы...
<xs:complexType name="IDType">
<xs:choice minOccurs="0" maxOccurs="2">
<xs:element name="DriversLicense" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="SSN" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="CompanyID" minOccurs="0" maxOccurs="1" type="an..35" />
</xs:choice>
</xs:complexType>
<xs:simpleType name="an..35">
<xs:restriction base="an">
<xs:maxLength value="35" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="an">
<xs:restriction base="xs:string">
<xs:pattern value="[ !-~]*" />
</xs:restriction>
</xs:simpleType>
<xs:complexType name="IDType">
<xs:sequence maxOccurs="2">
<xs:element name=Wrapper>
<xs:complexType>
<xs:choice>
<xs:element name="DriversLicense" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="SSN" minOccurs="0" maxOccurs="1" type="an..35" />
<xs:element name="CompanyID" minOccurs="0" maxOccurs="1" type="an..35" />
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:simpleType name="an..35">
<xs:restriction base="an">
<xs:maxLength value="35" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="an">
<xs:restriction base="xs:string">
<xs:pattern value="[ !-~]*" />
</xs:restriction>
</xs:simpleType>
Для создания классов, похоже, он отлично работает - элемент JAXB заменяется списком оболочек как String
(т.е. List<IDType.Wrapper<String>
) и отлично компилируется.
Однако, когда я распаковываю фактические данные XML в сгенерированные классы, данные в классе-оболочке не заполняются, но JAXB не генерирует исключение.
Мой вопрос: Нужно ли мне изменить схему по-другому, чтобы это работало? Или я могу что-то добавить/изменить/удалить в сгенерированном коде или аннотациях?