我有 3 个带注释的类(我故意删除了 getter、setter 等以使代码更具可读性):
结果.java
@XmlRootElement(name = "resultat")
@XmlType(propOrder = { "state", "content" })
public class Result {
protected State state;
protected Content content;
}
内容.java:
@XmlRootElement(name = "content")
@XmlSeeAlso({ Job.class })
public class Content {
}
和 Job.java 扩展内容:
@XmlType(name = "job", propOrder = { "status" })
@XmlRootElement(name = "job")
public class JobStatus extends Content {
protected String status;
}
我将 Job 实例设置为结果类的内容成员的值,但我得到以下生成的 xml 文件:
<result>
<state>
<tag>value</tag>
</state>
<content xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="job">
<status>ok</status>
</content>
</result>
但它不是一个有效的 xml 文件,由于“xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="job",我无法针对以下架构对其进行验证“部分,因为 job 不是来自http://www.w3.org/2001/XMLSchema-instance的类型。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="result">
<xs:complexType>
<xs:sequence>
<xs:element name="state">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="tag"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="content">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="status"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如何更改我的 JAXB 配置以避免此问题?
谢谢 !