2012-06-04 3 views
3

은 내가 통제 할 수있는 웹 서비스에서이 XML 문자열을 얻을 :XML 사용자 정의 직렬화

<foo> 
    <BIRTHTIME>02.06.2012-01:34.41 1338593681</BIRTHTIME> 
</foo> 

를 현재를,이 클래스에 위의 XML 문자열을 역 직렬화 : 당신으로

Public Class AppData 
    Public BIRTHTIME As String 
End class 

AppData.BIRTHTIME은 문자열 데이터 유형이지만 날짜 데이터 유형이어야합니다. 내가 달성하고자하는 것은이 클래스에 XML 문자열을 역 직렬화입니다 :

Public Class AppData 
    Public BIRTHTIME As Date 
End class 

문제는 내가 위의 클래스에 XML을 역 직렬화 할 때, 나는이 오류 "입력 문자열이 올바른 형식이 아니었다 얻을 수 있다는 것입니다. " . 누군가이 문제를 해결하기위한 우아한 해결책을 제시 할 수 있습니까? Thx

+0

* 1338593681 *은 무엇인가요? 귀하의 DateTime 값에 어떤 의미가 있습니까? – Filburt

답변

0

당신은 (디) 직렬화 할 때 무시되는 속성을 사용하여 드 직렬화를 제어 할 수 있습니다.

원본 날짜 문자열의 마지막 숫자 부분이 내 예제를 나타내는 지 여부가 명확하지 않으므로이를 고려하지 않습니다. 따라서 getter 및 setter 논리를 확장해야 할 수도 있습니다.

Public Class AppData 
    Private birthdatetime As DateTime 
    Private birthtimestring As String 


    <XmlElement(ElementName := "BIRTHTIME")> 
    Public Property DateString As String 
     Get 
      Return String.Format("{0:dd.MM.yyyy-HH:mm:ss} 1338593681", birthdatetime); 
     End Get 

     Set 
      birthtimestring = Value 
      Dim datetimepart As String() = birthtimestring.Split(New [Char]() {" "c})(0) 
      Dim ci As New CultureInfo("de-DE") 
      DateTime.TryParseExact(datetimepart, "dd.MM.yyyy-HH:mm:ss", ci, DateTimeStyles.None, birthdatetime) 
     End Set 
    End Property 


    <XmlIgnore()> 
    Public Property BirthDate As DateTime 
     Get 
      Return birthdatetime 
     End Get 

     Set 
      birthdatetime = Value 
     End Set 
    End Property 
End Class 

면책 조항 : 나는 그래서 C#을 번역 내 예를 몇 가지 오류가있을 수 있습니다 VB.Net 정말 실력이 아니에요. 실수를 편집 할 수 있습니다.