Java 从jaxb生成的代码中去掉JAXBElement?
我有一个xsd,从中生成一些java代码:Java 从jaxb生成的代码中去掉JAXBElement?,java,xml,xsd,jaxb,Java,Xml,Xsd,Jaxb,我有一个xsd,从中生成一些java代码: <xs:element name="full-account-v2" > <xs:complexType> <xs:sequence> <xs:element name="ban" type="xs:string" /> <xs:element name="status" type="xs:int" /> </xs:sequence&g
<xs:element name="full-account-v2" >
<xs:complexType>
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
</xs:element>
我尝试在单独的xml文件中为元素声明定义类型,但得到了相同的结果
这么简单的重构怎么会让我挣扎了8个小时呢?我做错了什么
注意:这似乎与
<xs:element name="full-account-v2" type="fullAccountV2" />
<xs:complexType name="fullAccountV2">
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
如上所述,上述模式定义还将生成一个工件FullAccountV2
。模式编译器使用分配给类型的任何内容来派生工件名称
如果使用schemagen
生成schemaxsd
,则这一点也很明显。例如-对于下面显示的类定义
@XmlRootElement
public class Pojo {
public Pojo p;
}
schemagen
生成以下模式定义
<xs:element name="pojo" type="pojo"/>
<xs:complexType name="pojo">
<xs:sequence>
<xs:element name="p" type="pojo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
请注意,name
和type
具有相同的值,即默认情况下的类名。“停止工作”不是一个有用的短语。详细说明特定错误消息或条件失败的原因:javax.xml.bind.MarshalException-链接异常:[com.sun.istack.internal.SAXException2:无法将类型“com.mycompany.global.er.decoupling.binding.response.v2.FullAccountV2”封送为元素,因为它缺少@XmlRootElement注释]
<xs:complexType name="payloadType">
<xs:sequence>
<xs:any processContents="lax" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:element name="full-account-v2" type="fullAccountV2" />
<xs:complexType name="fullAccountV2">
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
<!-- one is element and other is complexType -->
<xs:element name="fullAccountV2" type="fullAccountV2" />
<xs:complexType name="fullAccountV2">
<xs:sequence>
<xs:element name="ban" type="xs:string" />
<xs:element name="status" type="xs:int" />
</xs:sequence>
</xs:complexType>
@XmlRootElement
public class Pojo {
public Pojo p;
}
<xs:element name="pojo" type="pojo"/>
<xs:complexType name="pojo">
<xs:sequence>
<xs:element name="p" type="pojo" minOccurs="0"/>
</xs:sequence>
</xs:complexType>