当我解组一个特定的对象时,我没有得到该对象的类型ElementNSImpl,而是得到了包含我的数据的类型,但是为什么JAXB不会将其解组到我的JAXB类中?
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Asset", propOrder = {
"platformContentOrFeatureContentOrAirspace",
...
})
@XmlSeeAlso({
...
})
public abstract class Asset {
@XmlElements({
@XmlElement(name = "PlatformContent", type = AnyPlatform.class),
@XmlElement(name = "FeatureContent", type = AnyFeature.class),
@XmlElement(name = "Airspace", type = Airspace.class)
})
protected Object platformContentOrFeatureContentOrAirspace;
...
public Object getPlatformContentorFeatureContentorAirspace(){
return platformContentOrFeatureContentOrAirspace;
}
...
}
Run Code Online (Sandbox Code Playgroud)
这是一个模式片段:
<complexType name="Asset">
<complexContent>
<restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
<sequence>
<choice minOccurs="0">
<element name="PlatformContent" type="temp:TargetNamespaceURI}AnyPlatform"/>
<element name="FeatureContent" type="{temp:TargetNamespaceURI}AnyFeature"/>
<element ref="{temp:TargetNamespaceURI}Airspace"/>
</choice>
</sequence>
</restriction>
</complexContent>
</complexType>
Run Code Online (Sandbox Code Playgroud)
更新:
在这种情况下,我试图解组包含PlatformContent标记的XML。如果我删除@XmlTransient注释,则会收到一个异常消息,说明它无法实例化AnyPlatform。我对JAXB非常陌生,但是我意识到这可能是错误的一步,也是我将问题留给自己的一面@XmlTransient …