У меня есть XML-схема которого верхнего элемент документКак JAXB определяет, какой тип следует создавать, когда он упорядочивает XML, который может соответствовать обоим типам?
<xsd:element name="Document" type="Document"/>
Он содержит один элемент типа ZZ_Customer, который является ограничением Заказчика. Оба эти элемента содержат детей с одноименным названием, но с немного разными типами.
<xsd:complexType name="Document">
<xsd:sequence>
<xsd:element name="CstmrCdtTrfInitn" type="ZZ_Customer"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ZZ_Customer">
<xsd:complexContent>
<xsd:restriction base="Customer">
<xsd:sequence>
<xsd:element name="GrpHdr" type="ZZ_Group"/>
<xsd:element name="PmtInf" type="ZZ_Payment" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:restriction>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="Customer">
<xsd:sequence>
<xsd:element name="GrpHdr" type="Group"/>
<xsd:element name="PmtInf" type="Payment" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
Когда JAXB unmarshalls в XML-файл будет его создать экземпляр ZZ_Customer или будет создать экземпляр Клиента? Аналогично, когда он создаст экземпляр группы или ZZ_Group?
Я заметил, что JAXB будет экземплярами ZZ_ * для определенных частей XML, но использует их базовые счетные части для других частей XML.
На каком основании он принимает решения? Не кажется очевидным, какие критерии использует JAXB.
К сожалению, у меня нет контроля над схемой и ее дизайном.
Представленная вами XML-схема неполна. Вам необходимо будет предоставить определения группы и платежа с ZZ_ и без него, чтобы XML-схема могла быть скомпилирована и результаты могут быть исследованы. --- Простые подстановки таких типов, как csd: string для всего, что является неопределенным результатом в xjc, отказывающемся компилировать, что понятно. – laune