2011-03-29 60 views
4

我必須訪問有缺陷的Web服務,其中WSDL中的某些字段的類型爲xs:date,但我必須將它們填充爲xs:dateTime。JAXB綁定將xs:date更改爲xs:dateTime?

是否可以使用JAXB綁定文件來更改WSDL中字段的類型?

的WSDL的一個片段:

 <xs:sequence> 
      <xs:element name="startTime" type="xs:date" /> 
      <xs:element name="stopTime" type="xs:date" /> 
     </xs:sequence> 
+0

XJC無論如何都將'xs:date'和'xs:dateTime'綁定到'java.util.Date',所以生成的代碼沒有什麼不同。 – skaffman 2011-03-29 15:43:04

+0

但是,當我的請求中缺少時間部分時,類型爲xs:date。 – peter 2011-03-29 15:44:48

回答

1

可以使用@XmlSchemaType註釋配置XML表示:

@XmlElement(name = "date-of-birth") 
@XmlSchemaType(name = "date") 
protected XMLGregorianCalendar dateOfBirth; 

欲瞭解更多信息,請參閱:

+0

我正在使用CXF,它使用JAXB生成Java存根以訪問Web服務。生成的字段的類型是XMLGregorianCalendar,我可以忍受,但是當我發送請求時,SOAP字段應該填充「2011-03-29T15:00:00.000 + 02:00」而不是「2011-03-29 +02:00「爲例。 – peter 2011-03-29 16:06:46

+0

@peter - 您可以使用@XmlSchemaType註釋修改模型類,還是需要使用生成的內容? – 2011-03-29 18:15:53

+0

嗨,我需要使用生成的來源。這對我來說更具理論上的意義,因爲WSDL的提供者將在下一個版本中修復這個錯誤,而我爲之工作的項目仍處於開發階段。當元素具有與xs:序列中的屬性相同的名稱時,我已經使用JAX-WS綁定文件修復了WSDL問題。因此,與JAXB相關的JAX-WS相關問題更多,我混淆了這一點。 – peter 2011-03-31 08:38:09