为什么 JAXB 将 java 对象映射到复杂类型而不是元素?
我有这个 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
是第三方的,因此无法修改。
谢谢你!
乌多.
I have this XSD
: (fragment)
<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 outputs a Class called concreteComplexA
can I make it to output concreteA
name instead?
The XSD
is third party so it can't be modified.
Thank you!
Udo.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以使用外部绑定文件来控制生成的类的名称。例如,请参阅我对类似问题的回答:
JAXB 将 Java 对象映射到类型而不是元素的原因是,对于全局复杂类型(如您的示例),可能有许多全局元素引用它:
You can use an external bindings file to control the names of the generated classes. For an example see my answer to a similar question:
The reason why JAXB maps the Java object to the type instead of the element is that for global complex types (as in your example) there may be many global elements referencing it: