Java JAXB:如何始终为具有子类型的类型的元素包含xsi:type?
让我们假设以下模式:Java JAXB:如何始终为具有子类型的类型的元素包含xsi:type?,java,jaxb,xsitype,Java,Jaxb,Xsitype,让我们假设以下模式: <xsd:complexType name="User"> <xsd:sequence> <xsd:element name="name" type="xs:string"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="SpecialUser"> <xsd:complexContent
<xsd:complexType name="User">
<xsd:sequence>
<xsd:element name="name" type="xs:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="SpecialUser">
<xsd:complexContent>
<xsd:extension base="User">
<xsd:sequence>
<xsd:element name="speciality" type="xs:string"/>
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="UserContainer">
<xsd:sequence>
<xsd:element name="user" type="User"/>
</xsd:sequence>
</xsd:complexType>
我得到:
...
<user xsi:type="SpecialUser">
<name>name</name>
<speciality></speciality>
</user>
...
...
<user>
<name>name</name>
</user>
...
我得到:
...
<user xsi:type="SpecialUser">
<name>name</name>
<speciality></speciality>
</user>
...
...
<user>
<name>name</name>
</user>
...
。。。
名称
...
有没有一种方法可以将JAXB配置为在第二个示例中包括
xsi:type
(尽管是冗余的)?您可以将复杂类型User
asbtract,并且只使用它的扩展。也就是说,例如,您将引入一个新类型NormalUser
。我无法修改架构:(