60 Stimmen

Können Sie das Format für die XmlSerialisierung einer Datetime angeben?

Ich brauche zu serialisieren / deserialisieren eine datetime in yyyyMMdd Format für eine XML-Datei. Gibt es ein Attribut / Workaround, das ich dafür verwenden kann?

0 Stimmen

Sie können die Getter und Setter der Variablen manipulieren. Ich hatte zum Beispiel ein enum Sex{Unknown, Female, Male} und ich hatte einen String Setter, der m in male und f in female formatierte. Der Xml-Serialisierer schrieb auch f und m inseatd des vollen Enum-Namens. Funktionierte gut, aber es gibt fast keine praktische Verwendung für diese.

72voto

John Saunders Punkte 159011

Nein, die gibt es nicht. Wenn es in diesem Format ist, dann ist es kein gültiges dateTime, soweit es XML Schema betrifft.

Das Beste, was Sie tun können, ist Folgendes:

[XmlIgnore]
public DateTime DoNotSerialize {get;set;}

public string ProxyDateTime {
    get {return DoNotSerialize.ToString("yyyyMMdd");}
    set {DoNotSerialize = DateTime.Parse(value);}
}

14 Stimmen

Erwähnenswert ist, dass sowohl ein get/set vorhanden sein muss. Ich verbrachte eine halbe Stunde mit der Fehlersuche, warum meine Eigenschaft nicht serialisiert wurde. Es stellte sich heraus, dass ich kein "Set" hatte, weil ich mir dachte: "Ich werde diesen Wert nie ändern; warum sollte ich mir die Mühe machen, ein Set zu schreiben?

2 Stimmen

@spamguy: XmlSerializer behandelt nur öffentliche Eigenschaften mit einem öffentlichen get und öffentlichen set.

22voto

th2tran Punkte 321

XmlElementAttribut #DataType sollte das bieten, was Sie brauchen:

[XmlElement(DataType="date")]    
public DateTime Date1 {get;set;}

Dadurch werden Datum1 Eigenschaft, die mit der richtigen xml-Datum Format.

3 Stimmen

Nein, das Problem ist, dass ich es in ein nicht standardisiertes xml-Datumsformat serialisieren musste. Die akzeptierte Lösung ist, was ich für ging.

1 Stimmen

Bei mir funktioniert das nicht, ich erhalte einen Build-Fehler. [XmlElement(DataType="date")] funktioniert.

0 Stimmen

Danke! Mein Problem ist behoben. Ich habe versucht, die Komponente Zeit zu entfernen. Prost!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X