Ich habe ein Problem, bei dem ich ein DataSet nach XML schreibe, das eine Spalte vom Typ DateTime hat und ich möchte das Ausgabeformat steuern.
%Vor%Das Format der DateTime im XML scheint standardmäßig wie folgt zu sein:
%Vor%Ich möchte ein benutzerdefiniertes Datumsformat verwenden oder zumindest die Zeitzoneninformationen entfernen.
Gibt es eine Möglichkeit, das Format der DateTime-Spalten in meinem XML-Dataset zu steuern?
Mein Bauchgefühl sagt nein, da ich annahm, dass es so gemacht wird, um die Konvertierung von Daten über Zeitzonen hinweg zu ermöglichen, aber ich habe festgestellt, dass ich DataSet XML erfolgreich lesen kann, auch wenn DateTime-Spalten-Tags die Zeitzonendaten weglassen kann etwas analoges beim Schreiben in XML tun.
Es gibt ein Standardformat für DateTime
in XML. Das ist das Format, das WriteXml
verwenden wird. Wenn Sie ein anderes Format benötigen, müssen Sie DateTime
nicht verwenden. Wie andere gesagt haben, verwenden Sie stattdessen String
.
Diese Problemumgehung könnte für Sie geeignet sein, wenn Sie nur mit der Entfernung der Zeitzoneninformationen leben können. Der Standardwert für die DateTimeMode-Eigenschaft von DateTime-Spalten in DataSets ist Nicht angegeben. Sie könnten den DateTimeMode explizit auf "Nicht angegeben" festlegen, was bedeutet, dass der Zeitzonenteil nicht serialisiert wird.
z.B.
Sie können eine Funktion wie folgt verwenden:
%Vor%Anwendungsbeispiel:
%Vor%Ausgabe:
Standard.xml:
%Vor%OhneZeitzone.xml:
%Vor%Wenn Sie die Idee, die DataColumns Ihres ursprünglichen DataSets zu ändern, nicht mögen, können Sie eine Kopie davon erstellen und dann die Funktion für die Kopie aufrufen.
XSLT-Transformation auf DataSet anwenden: (aus MSDN ) (Ich glaube, dass Sie XSLT-Beispiel finden, um DateTime-Format zu konvertieren, oder auf SO veröffentlichen in Bezug auf XSLT und DateTime-Formate )
%Vor%Wenn die Datei regulär ist und das exportierte XML so aussieht, können Sie es einfach mit einer einfachen Schleife umschreiben. Einfache und schnelle Lösung. Verwenden Sie etwas von meinem Code, wenn Sie möchten:
%Vor%Die Ausgabe ist wie folgt:
%Vor%Anstelle von:
%Vor%Tags und Links c# xml serialization dataset