【问题标题】:JAXB generates List<Jaxbelement> instead of fieldsJAXB 生成 List<Jaxbelement> 而不是字段
【发布时间】:2014-05-13 11:19:44
【问题描述】:

我正在尝试使用以下 wsdl 的 jaxb maven 插件生成一个类:

<xs:complexType name="ctpLeerling">
<xs:sequence>
  <xs:element minOccurs="0" name="achternaam" type="xs:string"/>
  <xs:element minOccurs="0" name="voorvoegsel" type="xs:string"/>
  <xs:element minOccurs="0" name="voorletters-1" type="xs:string"/>
  <xs:element minOccurs="0" name="roepnaam" type="xs:string"/>
  <xs:element minOccurs="0" name="roepnaam" type="xs:string"/>
  <xs:element name="geboortedatum" type="xs:date"/>
  <xs:element minOccurs="0" name="geslacht" type="xs:string"/>
  <xs:element name="jaargroep" type="tns:ctpVocabulaireGebondenVeld"/>
  <xs:element minOccurs="0" name="emailadres" type="xs:string"/>
  <xs:element minOccurs="0" name="fotourl" type="xs:string"/>
  <xs:element minOccurs="0" name="groep">
    <xs:complexType>
      <xs:sequence/>
      <xs:attribute name="key" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element minOccurs="0" name="subgroepen">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" name="groep">
          <xs:complexType>
            <xs:sequence/>
            <xs:attribute name="key" type="xs:string"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element minOccurs="0" name="mutatiedatum" type="xs:dateTime"/>
</xs:sequence>
<xs:attribute name="key" type="xs:string" use="required"/>

它给了我一个包含以下字段的类:

protected List<JAXBElement<?>> content;
@XmlAttribute(name = "key", required = true)
protected String key;

如何生成 wsdl 属性的字段而不是带有 JAXBElements 的列表? 提前致谢!

编辑: 很抱歉我忘了提到我无法编辑 wsdl 文件!

【问题讨论】:

  • Blaise 下面的回答不能解决您的问题吗?如果是,你应该接受它。

标签: java jaxb wsdl maven-jaxb2-plugin jaxbelement


【解决方案1】:

您将获得 List&lt;JAXBElement&gt;,因为您在 sequence 中定义了两个具有相同名称的元素。

<xs:element minOccurs="0" name="roepnaam" type="xs:string"/>
<xs:element minOccurs="0" name="roepnaam" type="xs:string"/>

该元素最好定义为:

<xs:element minOccurs="0" maxOccurs="2" name="roepnaam" type="xs:string"/>

如果您找不到生成所需类的方法,您始终可以自己创建一个并使用外部绑定文件让 JAXB 在类生成期间为该复杂类型使用 if。

<jxb:bindings schemaLocation="yourSchema.xsd">
    <jxb:bindings node="//xs:complexType[@name='ctpLeerling']">
        <jxb:class ref="com.example.YourOwnClass"/>
    </jxb:bindings>
</jxb:bindings>

【讨论】:

    【解决方案2】:

    您可以使用外部绑定文件自定义生成。

    您可以通过example here。

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 2021-06-25
      • 2013-09-05
      • 2011-05-19
      • 1970-01-01
      • 2014-12-20
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多