Java 什么会导致@XmlRootElement类被解组到JaxbElement中?
我目前正试图通过JAXB解组一个XML文档。我已经在我的项目中生成了JAXB类,并且有一个用@XmlRootElement注释的根类 不幸的是,当我尝试解组时,我收到以下异常:Java 什么会导致@XmlRootElement类被解组到JaxbElement中?,java,xml,jaxb,jaxbelement,Java,Xml,Jaxb,Jaxbelement,我目前正试图通过JAXB解组一个XML文档。我已经在我的项目中生成了JAXB类,并且有一个用@XmlRootElement注释的根类 不幸的是,当我尝试解组时,我收到以下异常: java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to a.b.Foo 我的Foo类具有适当的注释,据我所知,这应该能够将我的XML解组到Foo类中 你有没有想过是什么原因造成的 编辑(澄清): 我试图打给unmarshal的
java.lang.ClassCastException: javax.xml.bind.JAXBElement cannot be cast to a.b.Foo
我的Foo类具有适当的注释,据我所知,这应该能够将我的XML解组到Foo类中
你有没有想过是什么原因造成的
编辑(澄清):
我试图打给unmarshal的电话是:
Foo foo = (Foo)unmarshaller.unmarshal(input);
第二次更新
我不允许更新我们的模式,但下面是'Foo'元素的XML模式结构
<xsd:element name="Foo" type="Foo_Type"/>
<xsd:complexType name="Foo_Type">
<!-- more schema definition here -->
</xsd:complexType>
然后,我通过JAXB绑定将@XmlRootElement annotatino添加到Foo类中。我发现如果我将模式更改为这样:
<xsd:element name="Foo">
<xsd:complexType>
<!-- more schema definition here -->
</xsd:complexType>
</xsd:element>
一切正常,但再一次——我们不应该更新模式。如果使用了采用
class
参数的unmarshal
方法之一,则带有@XmlRootElement
注释的类只应解组到JAXBElement
的实例
更新 如果解组代码如下所示:
Foo foo = (Foo)unmarshaller.unmarshal(input);
然后,在用@XmlRegistry
注释的类上必须有一个@xmlementdecl
(默认情况下,当模型从XML架构生成时,该类称为ObjectFactory
)对应于Foo
类。我在我的博客上写了更多关于这方面的内容: