簡體   English   中英

JAXB生成List <Jaxbelement>而不是字段

[英]JAXB generates List<Jaxbelement> instead of fields

我正在嘗試使用以下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文件!

您將獲得List<JAXBElement>因為您的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(如果是復雜類型)。

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

您可以使用外部綁定文件自定義生成。

你可以在這里看一個例子

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM