Ric*_*lot 4 java wsdl jaxb maven-jaxb2-plugin jaxbelement
我正在尝试使用以下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"/>
Run Code Online (Sandbox Code Playgroud)
它给了我一个具有以下字段的类:
protected List<JAXBElement<?>> content;
@XmlAttribute(name = "key", required = true)
protected String key;
Run Code Online (Sandbox Code Playgroud)
如何生成wsdl属性的字段而不是使用JAXBElements的列表?提前致谢!
编辑:对不起,我忘了提到我无法编辑wsdl文件!
你得到的是List<JAXBElement>因为你sequence在同一个名字中定义了两个元素.
<xs:element minOccurs="0" name="roepnaam" type="xs:string"/>
<xs:element minOccurs="0" name="roepnaam" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)
该元素可以更好地定义为:
<xs:element minOccurs="0" maxOccurs="2" name="roepnaam" type="xs:string"/>
Run Code Online (Sandbox Code Playgroud)
如果找不到生成所需类的方法,则可以自己创建一个并使用外部绑定文件在类生成期间使用JAXB(如果是复杂类型).
<jxb:bindings schemaLocation="yourSchema.xsd">
<jxb:bindings node="//xs:complexType[@name='ctpLeerling']">
<jxb:class ref="com.example.YourOwnClass"/>
</jxb:bindings>
</jxb:bindings>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3055 次 |
| 最近记录: |