我有一个类似于以下内容的 XML 文档:
请注意,我无法更改模式,因为它是标准 XML 模式(国会图书馆 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>
,但不仅限于这两种类型。创建两个类(如下所示),编组可以,但这不适用于解组。
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 的正确“类型”?