У меня есть XSD, из которого я генерирующий некоторые Java-код:Избавиться от JAXBElement из jaxb-сгенерированного кода?
<xs:element name="full-account-v2" >
<xs:complexType>
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
Это работает хорошо и дает мне сгенерированный класс под названием FullAccountV2.
Я хочу использовать тот же самый сложный тип в другом месте, поэтому я думал, я хотел бы создать именованный сложный тип в файле XSD, и относятся к нему, как это:
<xs:element name="full-account-v2" type="fullAccountV2Type"/>
Сложный тип определяется следующим образом :
<xs:complexType name="fullAccountV2Type">
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
Теперь внезапно беспилотник перестает работать. Следующий XML был демаршаллизации просто отлично в FullAccountV2:
<er-response id="100058" version="2">
<payload>
<full-account-v2>
<ban>BAN_P146058461158163004</ban>
<status>401</status>
</full-account-v2>
</payload>
</er-response>
Но теперь уже не кажется, что класс, и XML является unmarshalled по JAXB к JAXBElement
с Qname
full-account-v2
и declaredType
FullAccountV2Type
.
ErResponse и Payload определены в других местах:
<xs:complexType name="payloadType">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" />
</xs:sequence>
</xs:complexType>
Я попытался определением типа в отдельном XML-файл в объявление элемента, но получили тот же результат.
Как может такой простой рефактор причинить мне 8 часов борьбы? Что я делаю не так?
NB это, как представляется, обратная this problem
«перестает работать» не является полезной фразой. Подробное описание конкретного сообщения об ошибке или условия – Black