当前位置: 首页 > 知识库问答 >
问题:

由 XSD 生成的类中的错误

仇征
2023-03-14

我在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(name="ChannelId")行生成以下JAXB错误

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

有人知道这个错误消息是什么意思吗?我不能更改XSD文件,但是应该怎么做来删除错误(除了删除简单类,这看起来很合法)?或者至少抑制错误的产生?

任何帮助将不胜感激!

共有1个答案

易成双
2023-03-14

尝试禁用JAXB验证器。

项目-

 类似资料:
  • 如果 XML 是由 JAXB 类(而不是由 XSD)生成的,那么我没有要验证的 XSD。如何验证 XML?JAXB 在开始取消编组之前是否会自动对 XML 进行验证?

  • 我的pom.xml, 当我在“Netbeans”中使用maven进行构建时,这很好用。 但如果我在EclipseLuna中使用,它会产生如下错误:; 目标组织的执行默认值。jvnet。jaxb2。maven2:maven-jaxb2-plugin:0.12.3:generate失败:执行org时缺少必需的类。jvnet。jaxb2。maven2:maven-jaxb2-plugin:0.12.3:

  • 与JAXB为给定XSD生成JAXB类类似,Jackson是否提供了从XSD或JSON生成Jackson类的实用程序。 JAXB类geberator已经生成了一组为XSD模式定义的类。例如,对于多态类型,JAXB具有以下注释,以基于XML元素名称来标识名称。 是否可以在杰克逊中创建类似的类。即,基于XML元素名称来标识类型。

  • 我创建了一个简单的. proto文件并执行了编译器(protoc-2.5.0rc1-win32.zip)。为规定的包生成了一个java文件。但是,生成的文件不会编译。. proto文件很简单,只有一条消息,其中包含一堆简单类型的可选字段(正确编号)。. java文件不编译,例如: 构造函数生成了消息。FieldAccessorTable(Descriptors.Descriptor,字符串[])未

  • 问题内容: 我有一个巨大的QuickBooks SDK .XSD模式文件,该文件定义了我可以从QuickBooks发送/接收的XML请求/响应。 我希望能够轻松地从这些.XSD文件生成Java类,然后将其用于将XML编组为Java对象,以及将Java对象编组为XML。 是否有捷径可寻…? 理想情况下,它在运行时不需要基本Java发行版外部的任何库。但是我很灵活 问题答案: JAXB确实可以满足您的

  • 我正在使用maven jaxws插件从我的wsdl模式生成java类。它没有在生成的类中生成@XmlElementWrapper注释。从这篇文章中,我了解到我需要使用jaxb xew插件,但我无法让它与maven jaxws插件一起工作。任何帮助都将不胜感激。这是我试过的配置 如果它只能与maven-jaxb2-plugin集成,你能帮我升级我的Web服务吗?本质上,我该如何指定wsdl以及如何生