Настройка генерации кода Java из XSD со смешанным содержимым - PullRequest
0 голосов
/ 28 октября 2019

У меня есть и 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 содержал отдельные поля для каждого элемента последовательности и поле для значения начального сложного типа?

...