Pos*_*Guy -1 c# xml-serialization
[XmlElement(ElementName = ElementConstants.CreateDate,
Namespace = "http://api.facebook.com/1.0/",
DataType = "date", Type = typeof(DateTime))]
public DateTime CreateDate { get; set; }
Run Code Online (Sandbox Code Playgroud)
如果我尝试在属性中取出DataType:{"字符串'1233469624'不是有效的AllXsd值."}
以下是其中一个节点值的示例:
<created>1230437805</created>
Run Code Online (Sandbox Code Playgroud)
我不知道如何在这里设置DateTime属性,以便成功反序列化.
Mar*_*ell 10
我几天前已经为你回答了这个问题.
在您的课堂上,您需要进行翻译:
static readonly DateTime epoch = new DateTime(1970, 1, 1);
static long SerializeDateTime(DateTime value)
{
return (long)((value - epoch).TotalSeconds);
}
static DateTime DeserializeDateTime(long value)
{
return epoch.AddSeconds(value);
}
[XmlIgnore]
public DateTime CreateDate { get; set; }
[XmlElement("created"), Browsable(false)]
[EditorBrowsable(EditorBrowsableState.Never)]
public long CreateDateInt64 {
get {return SerializeDateTime(CreateDate);}
set {CreateDate = DeserializeDateTime(value);}
}
Run Code Online (Sandbox Code Playgroud)
这CreateDateInt64是使用的版本XmlSerializer- 但是在调用时,它执行转换并将值传递给CreateDate(XmlSerializer由于属性而被忽略).
这意味着你DateTime CreateDate在类上有一个,在xml中有一个数字.
这看起来像是一个unix格式的时间戳给我.Xml"date"数据类型在格式应该是非常明确的:
yyyy-MM-ddTHH:mm:ss.fffffff +时区偏移量
例如: 2009-02-09T10:01:23.3212345+06:00