小编ini*_*goD的帖子

JAXB解组:ElementNSImpl来自何处?

当我解组一个特定的对象时,我没有得到该对象的类型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 …

java xml xsd jaxb

5
推荐指数
1
解决办法
5219
查看次数

标签 统计

java ×1

jaxb ×1

xml ×1

xsd ×1