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

는 내가 얻을 : { "문자열 '1233469624'은 (는) 유효한 AllXsd 값이 아닙니다."} 여기 deserialization 중에 '문자열이 유효한 DateTime으로 인식되지 않습니다.'라는 오류 메시지가 무엇입니까? 내가 속성의 데이터 형식을 복용하려고하면

노드 값 중 하나의 예입니다 :

<created>1230437805</created> 

성공적으로 역 직렬화되도록 여기에 DateTime 속성을 설정하는 방법을 잘 모르겠습니다.

답변

10

나는 이미 당신에게 대답했습니다 a few days ago. 클래스에서

, 당신은 번역 할 필요가 :

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

CreateDateInt64XmlSerializer가 사용하는 버전입니다 -하지만 호출 할 때, 그것은 번역을 수행하고 (CreateDate을 통해 값을 전달하는 특성으로 인해 XmlSerializer에 의해 무시됩니다.

이것은 클래스에 DateTime CreateDate, xml에 숫자가 있음을 의미합니다.

+0

쉬운). 그리고 질문자는 이미 내가이 벼룩을 주었다는 것을 알아야한다 !! 나는 단지 사람들이 이미 언급 된 것을 너무 깊이 들여다 보면서 시간을 보내는 것을 막고 싶었습니다. –

+0

멋진데 :) upvote –

+0

이 답변을 주셔서 감사합니다. 동일한 문제가 있었고 위의 방법을 사용하여 해결할 수있었습니다. – DennyFerra

5

저에게 유닉스 형식의 타임 스탬프처럼 보입니다. 는 XML "날짜"데이터 형식 형식이어야 무엇을 매우 명시 적이다 : 예를 들어

yyyy-MM-ddTHH:mm:ss.fffffff+timezone offset

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

나는 (그가 그것을하지 않았다, 같은 질문 4 번 물었다을 찾고 있었다
+0

OP는 페이스 북에서 되돌아 오는 데이터를 제어 할 수 없습니다 ... 더 많은 번역 연습입니다. 하지만 예, 그것은 유닉스 시대의 타임 스탬프입니다. –

+0

xml에 그 중간에'T'가 없습니까? –

+0

예. 그렇습니다. 결정된. –

관련 문제