3 つの注釈付きクラスがあります (コードを読みやすくするために、ゲッター、セッターなどを意図的に削除しました)。
結果.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;
}
結果クラスの content メンバーの値として 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 構成を変更するにはどうすればよいですか?
ありがとう !