Я использую JAX-b для генерации классов из схемы XSD (составной по нескольким файлам, и я не знаю, является ли это проблемой), и результат не тот, который я ожидал. Созданные объекты не предоставляют геттеры для отдельных атрибутов, но они предлагают геттер для списка атрибутов как Object , и я должен привести каждый объект вручную.
т.е.
файл lom.xsd имеет:
<xs:include schemaLocation="common/elementTypes.xsd"/>
<xs:include schemaLocation="common/rootElement.xsd"/>
в файле elementTypes.xsd имеем:
<xs:complexType name="lom">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="general"/>
<xs:group ref="lifeCycle"/>
</xs:choice>
</xs:complexType>
вместо этого в rootElement.xsd у нас есть
<xs:element name="lom" type="lom">
<xs:unique name="lomUnique">
<xs:selector xpath="*"/>
<xs:field xpath="@uniqueElementName"/>
</xs:unique>
</xs:element>
Что я получаю, так это класс:
public class General{
List<Object> titleOrlifeCicle
}
и я бы притворился:
public class General{
String title;
String lifeCicle
}
В другой схеме он работает нормально, но, похоже, со схемой в разных файлах это не сильно помогает. Есть ли способ получить вторую версию из схемы?
Спасибо.