具有合格类型参考的不合格元素

时间:2011-09-15 16:19:15

标签: jaxb jaxb2

我实际上是在尝试从JAXB Annotations生成以下XML块。

<pCredentials xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:type="ns3:LoginCredentials">
        <loginId>user</loginId>
        <loginPassword>password</loginPassword>
        <userType>super</userType>
     </pCredentials>

我尝试了以下注释和相同类型的多个变体:

@XmlElement(name = "pCredentials", namespace = "##default", type = com.foo.LoginCredentials.class)
private LoginCredentials pCredentials;

但它会产生以下结果:

   <pCredentials>
        <loginId>user</loginId>
        <loginPassword>password</loginPassword>
        <userType>super</userType>
     </pCredentials>

关于我可以提供什么类型的注释以产生类型引用的任何建议?

感谢您的帮助...... Jay

1 个答案:

答案 0 :(得分:1)

当值的Java类型与元素的预期类型不匹配时,JAXB实现将仅添加xsi:type属性。这就是你尝试的东西不起作用的原因(因为你说元素类型与值的类型相同。

您可以执行以下操作:

@XmlElement(type = Object.class)
private LoginCredentials pCredentials;

注意

  • 要解组的XML中需要xsi:type属性。
  • 您需要在LoginCredentials引导的类列表中包含JAXBContext

了解更多信息