JAXB从XSD生成的类中的错误

时间:2014-02-28 09:02:03

标签: java eclipse jaxb xsd

我在eclipse Luna中使用JAXB从第三方XSD文件生成Java类。该文件通常定义一个简单类型,它只是一个基本类型。例如:

<xsd:simpleType name="ChannelIdType">
  <xsd:restriction base="xsd:unsignedInt" />
</xsd:simpleType>

然后将简单类型用于复杂类型的元素,例如:

<xsd:complexType name="DataRequestEntryType">
  <xsd:sequence>
    <xsd:element name="ChannelId" type="ChannelIdType" />
    <xsd:element name="IsChannelOpen" type="xsd:boolean" />
    ...
  </xsd:sequence>
</xsd:complexType>

JAXB为复杂类型生成一个看似完全正确的Java类:

public class DataChannelEntryType {
  @XmlElement(name = "ChannelId")      <-- ERROR here, see below
  protected long channelId;
  @XmlElement(name = "IsChannelOpen")
  protected boolean isChannelOpen;
  ...
}

但是,它还为@XmlElement行生成以下JAXB ERROR(name =“ChannelId”)

The expected XML type associated with 'long' is not valid for XML element 'ChannelId'.

有人知道错误信息的含义吗?我无法更改XSD文件,但应该怎么做才能删除错误(除了删除简单类,无论如何看起来很合法)?或者至少抑制错误的产生?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

尝试禁用JAXB验证器。

项目 - &gt;属性 - &gt;验证 - &gt; Jaxb Validator