我正在使用带有JAX-WS RI 2.2.3的axis2-1.6.2。
我正在使用WSDL生成骨架,存根和模型类。 以下是WSDL的代码片段。
<xs:complexType name="dailyBooking">
<xs:sequence>
<xs:element minOccurs="0" name="day" qualified="true" type="xs:date" />
<xs:element minOccurs="0" name="noOfBookings" type="xs:int" />
</xs:sequence>
</xs:complexType>
它生成以下类
public class DailyBooking {
protected Integer noOfBookings;
@XmlSchemaType(name = "date")
protected XMLGregorianCalendar day;
我想生成java.util.Date而不是XMLGregorianCalendar。 怎么可能。
答案 0 :(得分:1)
实现此目的的快速而肮脏的方法是在xsd中指定一个注释,该注释将指示JAXB要转换的类型以及如何转换它们。试试这个:
将JAXB名称空间添加到xsd文件(如果您的类型定义嵌入在wsdl中,则添加wsdl本身部分)
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
jaxb:version="2.0"
将以下注释元素添加为<schema/>
元素的子元素或xsd文件
<xs:annotation>
<xs:appinfo>
<jaxb:globalBindings mapSimpleTypeDef="false" choiceContentProperty="true">
<jaxb:javaType name="java.util.Date" xmlType="xs:date"
parseMethod="javax.xml.bind.DatatypeConverter.parseDate"
printMethod="javax.xml.bind.DatatypeConverter.printDate"/>
</jaxb:globalBindings>
</xs:appinfo>
</xs:annotation>
一些注意事项:
javaType
元素指定要转换为的java数据类型和
xmlType
指定它在架构定义中的相应位置。
使用globalBindings
表示该xml类型的所有匹配都将受到您指定的自定义的影响