2012-06-04 6 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

Вы можете управлять десериализацией, используя свойство, игнорируется, когда (де-) сериализации.

Поскольку неясно, какая последняя числовая часть строки исходного источника представляет мой пример, это не касается - вам может потребоваться расширить соответствующую логику получателя и сеттера.

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 

Отказ от ответственности: Я не очень опытен с VB.Net так что мой пример в переводе с C# может содержать некоторые ошибки. Не стесняйтесь исправить ошибки

Смежные вопросы