Wie kann ich Deserialisieren eine Liste von DateTime-Objekten?
Wenn ich das folgende XML-segment:
<Times>
<Time>1/1/1900 12:00 AM</Time>
<Time>1/1/1900 6:00 AM</Time>
</Times>
Was sollte die entsprechende Eigenschaft Aussehen, dass bei der Deserialisierung erfolgt, akzeptiert die oben genannten XML-Code in eine Liste von DateTime-Objekten?
Dies funktioniert Deserialisieren des XML-segment, um eine Liste der string
Objekte:
[XmlArray("Times")]
[XmlArrayItem("Time", typeof(string))]
public List<string> Times { get; set; }
Aber wenn ich mit DateTime als Typ anstatt string (sowohl für die Liste geben und XmlArrayItem-Typ), bekomme ich die folgende Fehlermeldung:
The string '1/1/1900 12:00 AM' is not a valid AllXsd value.
Dank!
- Re Kommentar - ja, Sie können serialisieren/Deserialisieren automatisch, wenn die Daten im richtigen format; siehe update.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit
DateTime
erwarte ich, dass ein großer Teil des Problems ist, dass das format der xml ist falsch; das ist nicht der xsd-standard für Daten... können Sie Einfluss auf die xml überhaupt? Andernfalls könnten Sie haben zu stick mit Streichern und Verfahren Sie danach.Mehr standard-xml wäre:
Beispiel:
Der einfachste Weg ist das erstellen einer neuen Eigenschaft, die serialisiert wird, anstatt das Mal Eigentum, und behandelt die Formatierung von :
CultureInfo.InvariantCulture
undParseExact
und nicht ohneCultureInfo.InvariantCulture
und "normal"Parse
?Werfen Sie einen Blick auf die msdn-Artikel:
http://msdn.microsoft.com/en-us/library/ms950721.aspx
Er schlägt vor, dass ein DateTime-Objekt sollte als solche gekennzeichnet sein:
[System.Xml.Serialisierung.XmlElementAttribute("publication-date",
DataType="date")]
öffentlichen System.DateTime publicationdate;
DateTime
ist nicht nur ein ProblemList<DateTime>