我有XSD
:(片段)
<xs:complexType name="complexA">
<xs:sequence>
<xs:element ref="abstractA" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:element name="abstractA" abstract="true"/>
<xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/>
<xs:complexType name="concreteComplexA">
<xs:attribute name="class" type="classId" use="required"/>
<xs:attribute name="property" type="namingId" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>
JAXB输出一个名为concreteComplexA
的类,我可以改为输出concreteA
名吗?
XSD
是第三方,因此无法修改。
谢谢!
乌
答案 0 :(得分:5)
您可以使用外部绑定文件来控制生成的类的名称。有关示例,请参阅我对类似问题的回答:
JAXB将Java对象映射到类型而不是元素的原因是对于全局复杂类型(如在您的示例中),可能有许多引用它的全局元素:
<xs:element name="concreteA" type="concreteComplexA" substitutionGroup="abstractA"/>
<xs:element name="anotherConcreteA" type="concreteComplexA" substitutionGroup="abstractA"/>
<xs:complexType name="concreteComplexA">
<xs:attribute name="class" type="classId" use="required"/>
<xs:attribute name="property" type="namingId" use="required"/>
<xs:attribute name="value" type="xs:string" use="required"/>
</xs:complexType>