错误是什么:在反序列化过程中'字符串未被识别为有效的DateTime'?

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中有一个数字.


Joe*_*orn 5

这看起来像是一个unix格式的时间戳给我.Xml"date"数据类型在格式应该是非常明确的:

yyyy-MM-ddTHH:mm:ss.fffffff +时区偏移量

例如: 2009-02-09T10:01:23.3212345+06:00