C# 如何在c语言中将xml日期值序列化为DateTime类#
我正在传递以下xmlC# 如何在c语言中将xml日期值序列化为DateTime类#,c#,xml,C#,Xml,我正在传递以下xml <PolicyNumber>6456365A1</PolicyNumber> <EffectiveDate>2015-10-01T00:00:00</EffectiveDate> <ExpirationDate>2016-10-01T00:00:00</ExpirationDate> 策略号的值按预期传递。DateTime的值没有传递,而是有其默认值。我使用fiddler将其发布到WebAPI mvc
<PolicyNumber>6456365A1</PolicyNumber>
<EffectiveDate>2015-10-01T00:00:00</EffectiveDate>
<ExpirationDate>2016-10-01T00:00:00</ExpirationDate>
策略号的值按预期传递。DateTime的值没有传递,而是有其默认值。我使用fiddler将其发布到WebAPI mvc
您只需将其设置为仅用于序列化的私有成员即可
[DataContract]
public class AutoIDCardParameter
{
[DataMember(Name = "PolicyNumber")]
public string PolicyNumber;
[DataMember(Name = "EffectiveDate")]
private string _EffectiveDate {
get {
return EffectiveDate.ToString("yyyy-MM-DDTHH:mm:ss");
}
set {
DateTime.TryParse(value, out EffectiveDate);
}
}
public DateTime EffectiveDate;
// ....
}
这里的顺序不对
DataContractSerializer
将使用字母顺序,除非您另有指定(请参阅),因此它需要EffectiveDate
,ExpirationDate
,然后是PolicyNumber
您需要按照该顺序重新排列XML,或者需要通过属性指定类的顺序:
[DataContract]
public class Parameter
{
[DataMember(Order = 0)]
public string PolicyNumber { get; set; }
[DataMember(Order = 1)]
public DateTime EffectiveDate { get; set; }
[DataMember(Order = 2)]
public DateTime ExpirationDate { get; set; }
}
你能给我们看一下反序列化代码吗?还有,为什么不在生效日期添加
DataMember
属性?ExpirationDate
有效吗?您没有有效的xml文件。XML必须有标识行,并且只有一个根标记。在反序列化之前,您需要使用标识行和根选项卡包装接收的xml数据。过期日期也不起作用。我忘记了数据成员名称。
[DataContract]
public class Parameter
{
[DataMember(Order = 0)]
public string PolicyNumber { get; set; }
[DataMember(Order = 1)]
public DateTime EffectiveDate { get; set; }
[DataMember(Order = 2)]
public DateTime ExpirationDate { get; set; }
}