2013-07-10 283 views
0

此問題的變體已被問到幾十次,但我需要的解決方案似乎極其難以捉摸。我希望這次是魅力!將C#日期時間轉換爲XML日期時間類型

我有一個C#應用程序,它正在通過SOAP XML與Java Web服務進行通信。應用程序使用WSDL導入服務時沒有問題。但是,其中一個xml對象的類型爲dateTime。

<complexType name="Interaction"> 
    <sequence> 
     <element name="ContactDate" type="dateTime" minOccurs="0" maxOccurs="1"/> 
    </sequence> 
</complexType> 

我有一個我從數據庫中檢索到的日期,如下所示:2013-07-10。 我需要得到它進入使用UTC格式的XML DateTime對象:YYYY-MM-DDTHH:MM:ss.fffzzz

我可以很容易地將它轉換爲正確解析字符串。這不是問題。當我嘗試將數據加載到服務對象時,會發生此問題。我無法將數據加載爲字符串。它必須是DateTime對象,但是DateTime拒絕使用UTC格式。

我認爲這可能是序列化的問題。我認爲在轉換爲xml以發送到Web服務時無法正確序列化。這裏是這個特定元素的序列化信息:

[System.Xml.Serialization.XmlElementAttribute(Order=2)] 
public System.DateTime ContactDate { 
    get { 
     return this.contactDateField; 
    } 
    set { 
     this.contactDateField = value; 
     this.RaisePropertyChanged("ContactDate"); 
    } 
} 

關於我可能會丟失或做錯的任何想法?任何幫助將不勝感激。 謝謝!

+2

這是序列化問題還是解析問題?這個答案有幫助嗎? http://stackoverflow.com/a/1756681/116895 – lance

+1

另一個潛在的幫助? http://stackoverflow.com/q/6314154/116895 – lance

+0

仍在研究這個,但提供的這些技巧似乎都是採用xml或DateTime並將其轉換爲字符串的常見方案。轉換爲字符串似乎不是問題。更重要的是強制DateTime序列化爲正確的格式。如果我能捕獲序列化輸出以驗證它放在那裏,那將會很好。 –

回答

0

最後,這是我們爲這個問題提出的非常不幸的答案。我們無法識別強制C#正確序列化爲日期時間格式。爲了解決這個問題,我們最終更改了Java Web服務的WSDL以將類型更改爲字符串。一旦它被設置爲字符串,其他所有內容顯然很容易。

complexType name="Interaction"> 
    <sequence> 
     <element name="ContactDate" type="string" minOccurs="0" maxOccurs="1"/> 
    </sequence> 
</complexType> 
相關問題