2013-07-10 227 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> 
相关问题