-1
[XmlElement(ElementName = ElementConstants.CreateDate, 
    Namespace = "http://api.facebook.com/1.0/",
    DataType = "date", Type = typeof(DateTime))]
public DateTime CreateDate { get; set; }

そして、属性で DataType を取得しようとすると、次のようになります: {"文字列 '1233469624' は有効な AllXsd 値ではありません。"}

ノード値の 1 つの例を次に示します。

<created>1230437805</created>

これを正常に逆シリアル化するために、ここで DateTime プロパティを設定する方法がわかりません。

4

2 に答える 2

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);}
}

など。CreateDateInt64は-を使用するバージョンですXmlSerializerが、呼び出されると、変換を実行し、値をに渡しますCreateDate(属性のために無視されXmlSerializerます)。

これはDateTime CreateDate、クラスにがあり、xmlに番号があることを意味します。

于 2009-02-09T15:57:20.227 に答える
5

それは私にはUNIX形式のタイムスタンプのように見えます。Xmlの「日付」データ型は、形式がどうあるべきかについて非常に明示的です。

yyyy-MM-ddTHH:mm:ss.fffffff+タイムゾーンオフセット

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

于 2009-02-09T16:01:53.227 に答える