gpt4 book ai didi

java - 为什么 JAXB 以不同的方式处理扩展?

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:58 25 4
gpt4 key购买 nike

考虑以下 XSD 文件:

<xs:element name="person" type="Person"/>
<xs:element name="teacher" type="Teacher"/>

<xs:complexType name="Person">
<xs:sequence>
<xs:element name="age" type="xs:int"/>
<xs:element name="sex" type="xs:string"/>
<xs:element name="fullname" type="xs:string"/>
</xs:sequence>
</xs:complexType>

<xs:complexType name="Teacher">
<xs:complexContent>
<xs:extension base="Person">
<xs:sequence>
<xs:element name="school" type="xs:string"/>
<xs:element name="grade" type="xs:string"/>
<xs:element name="subject" type="xs:string"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

我使用 JAXB 为这些复杂类型生成 Java 类。奇怪的是,Teacher 类用 @XmlRootElement 进行了注释,而 Person 类则没有。

有谁知道这是为什么吗?

最佳答案

具有匿名复杂类型的顶级元素会在其上生成 @XmlRootElement 注释。具有命名复杂类型的顶级元素在生成的 ObjectFactory 上具有 @XmlElementDecl 注释。 Teacher 不应使用 @XmlRootElement 生成,除非使用某种绑定(bind)自定义。

了解更多信息

我在我的博客上写了更多相关内容:

关于java - 为什么 JAXB 以不同的方式处理扩展?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25393252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com