次のような XML ドキュメントがあります。
スキーマは標準の XML スキーマ (Library of Congress METS) の一部であるため、変更できないことに注意してください。
<amdSec ID="AMDSEC001">
<digiprovMD ID="DMD001">
<mdWrap MDTYPE="OBJECT">
<xmlData>
<object xsi:type="file">
.....
</object>
</xmlData>
</mdWrap>
</digiprovMD>
<digiprovMD ID="DMD001_EVENT">
<mdWrap MDTYPE="EVENT">
<xmlData>
<event xsi:type="event">
.....
</event>
</xmlData>
</mdWrap>
</digiprovMD>
</amdSec>
ご覧のとおり、内側の<mdWrap>
要素にはさまざまなタイプの要素を含めることができます。この場合、それらは<event>
とです<object>
が、これら 2 つのタイプだけに制限されているわけではありません。(以下のように) 2 つのクラスを作成すると、マーシャリングは問題ありませんが、これはアンマーシャリングには機能しません。
class ObjectMDWrap {
@XmlElementWrapper(name = "xmlData")
@XmlElement(name = "object")
List<MyObject> object; //Wrapped in list to use @XmlElementWrapper
}
class EventMDWrap {
@XmlElementWrapper(name = "xmlData")
@XmlElement(name = "event")
List<MyEvent> event; //Wrapped in list to use @XmlElementWrapper
}
JAXB が MDWrap の正しい「タイプ」を非整列化するようにするにはどうすればよいですか?