У меня есть и xsd-файл (неизменяемый политикой), с чем-то вроде этого:
<xs:complexType name="ComplexTypeName" mixed="true">
<xs:sequence>
<xs:element name="InnerSimpleTypeName" minOccurs="0" maxOccurs="1" type="InnerSimpleType"></xs:element>
<xs:element name="InnerValue1" minOccurs="0" maxOccurs="1" type="xs:string"></xs:element>
<xs:element name="InnerValue2" minOccurs="0" maxOccurs="1" type="xs:string"></xs:element>
</xs:sequence>
<xs:attribute name="UnrelevantName1" type="UnrelevantComplexType" use="required"></xs:attribute>
<xs:attribute name="UnrelevantName2" type="xs:integrer"></xs:attribute>
</xs:complexType>
<xs:simpleType name="InnerSimpleType">
<xs:restriction base="xs:string" />
</xs:simpleType>
Я использую maven-jaxb2-plugin для генерации из него java-кода с включением пользовательского xjb-файлавнести изменения в сгенерированный код Java. Для части XSD, упомянутой ранее, я получаю класс с этим (пропуская все нерелевантные части):
@XmlElementRefs({
@XmlElementRef(name = "InnerSimpleTypeName", type = "JAXBElement.class", required=false),
@XmlElementRef(name = "InnerValue1", type = "JAXBElement.class", required=false),
@XmlElementRef(name = "InnerValue2", type = "JAXBElement.class", required=false)
})
@XmlMixed
protected List<Serializable> content;
Итак, у меня нет отдельных полей для частей последовательности, все из-за mixed = "true" (и это необходимо, потому что этот тип имеет как значение, так и элементы). Есть ли способ (без изменения файла XSD, например, с дополнительной конфигурацией в файле XJB) сделать так, чтобы сгенерированный код Java содержал отдельные поля для каждого элемента последовательности и поле для значения начального сложного типа?